2013-05-30 2 views
4

Новое для рельсов. Просто пытаюсь понять эти два файла в каталоге \ assests.Rails - Понимание application.js и application.css

Например, application.js файл имеет линии, такие как:

//= require jquery 
//= require jquery_ujs 
//= require_tree . 

Я понимаю require_tree . просто добавляет все файлы JS в текущем каталоге. И в контексте, я могу сказать, что require jquery добавляет библиотеки jQuery. Но откуда они берут эти библиотеки jQuery? Я не вижу файлы jquery.js в папке с моими активами - или во всем моем приложении напрямую?

Аналогичным образом, я следую инструкциям по установке twitter bootstrap (http://rubydoc.info/gems/bootstrap-sass-rails/2.3.2.0/frames). После добавления моих драгоценных камней в Gemfile мне нужно добавить //= require bootstrap в файл application.js и @import 'bootstrap' в мое приложение.css, и теперь он волшебным образом работает !!! Зачем!? Я не могу найти эти файлы в любом месте

Спасибо!

ответ

2

Чтобы понять это, вы должны посмотреть на Sprockets, который используется для компиляции и обслуживания веб-ресурсов.

Файлы можно найти следующими способами: gem which. Вот пример с bootstrap-sass:

~ gem which bootstrap-sass 
/Users/andr/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/bootstrap-sass-2.3.0.1/lib/bootstrap-sass.rb 

Объяснение @import 'bootstrap': https://github.com/thomas-mcdonald/bootstrap-sass#css и есть открытая issue с комментариями.

0

Я думаю, что он получает их от драгоценных камней, установленных на вашей системе и включенных в этот проект через ваш Gemfile.

Вы можете узнать на http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives

+0

Спасибо, Майкл. Для моего собственного любопытства, где я могу найти эти файлы? Вы говорите, что они, скорее всего, не относятся к моему проекту, но находятся в другом каталоге, который связан с рельсами в целом? (Так что независимо от проекта) – Ricky

+1

@ Ricky Например, если вы введете терминал «gem, который jquery-rails», вы можете увидеть путь, где вы можете найти эти файлы –

+0

Отлично, спасибо! – Ricky

0

Это рельсы магии! Таким образом, вы не можете видеть файлы в своем собственном каталоге проекта. Если вы действительно хотите знать, то можно извлечь код драгоценного камня на странице GitHub драгоценного камня https://github.com/twbs/bootstrap

Кроме того, если вы действительно хотите изменить что-то в камне, вы можете раскошелиться кодом в вас есть GitHub, изменить положение вещей в вашем местном филиале, а затем укажите свой собственный github в качестве источника для драгоценного камня в вашем gemfile, например ...

gem 'twitter-bootstrap',: git => '[email protected]: my_github/twitter_bootstrap .git '

Но, возможно, вы не захотите попробовать, если вы действительно новичок в рельсах;)

9

application.css и application.js не являются регулярными CSS и JS файлы (они могут быть, но они служат иной цели

оба проявляются файлы, которые говорят трубопровод активов вместе с звездочками для JS

так, как правильно указал ответ Майкл Дюран, в http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives будет правильное место

, но в соответствии с вашими другие вопросы, вы, кажется, не хватает довольно критический кусок головоломки

Рельсы в основном работают с драгоценными камнями. Драгоценные камни - это кусочки рубинового кода, которые вы можете сказать добавить в свое приложение rails через bundler

Когда вы добавляете такой драгоценный камень, как самоцветов, он устанавливается (по умолчанию в библиотеке драгоценных камней, где у вас установлен рубин) что-то вроде Ruby193 \ lib \ ruby ​​\ gems \ 1.9.1 \ gems)

Если вы поедете туда и посмотрите на самонаводку, вы найдете файлы css и js, которые включены в приложение, а также jquery и jquery_ujs, который вы включаете в файл манифеста

Поскольку драгоценные камни устанавливаются рядом с рельсами, рельсы не возражают против того, где находятся файлы (до тех пор, пока он знает, где они находятся).

Так что файл манифеста говорит рельсы «Эй, включите эти файлы для меня, в этом особом порядке» Именно поэтому вы можете включить файлы, которые вы написали, которые находятся в папке активов и файлы включены в гем

Если вы не включаете файлы в манифест, но все еще устанавливаете драгоценный камень, эквивалентный написанию файла css или js, поместив его в какую-то папку и не сообщив, что он существует. Когда вы скажете рельсы, где это, через файл манифеста, он будет включать его в процесс компиляции активов, и вы можете получить к нему доступ регулярно.

Alternativly, вы не должны использовать трубопровод активов для активов

вы можете включить CSS и JS файл с обычным

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 

и просто разместить свои файлы где-то и направьте его на файлы, но конвейер активов имеет много преимуществ, и он действительно облегчает вашу жизнь, когда вы это узнаете.

Смежные вопросы