Конвейер ресурсов Rails 3.1 не видит файлы - PullRequest
1 голос
/ 15 декабря 2011

Мы обновляем наше приложение с Rails 2 до Rails 3.1, и у меня возникают проблемы с конвейером ресурсов.

В моем config / application.rb есть следующее:

if defined?(Bundler)
  Bundler.require *Rails.groups(:assets => %w(development test))
  # Bundler.require(:default, :assets, Rails.env)
end

# Enable the asset pipeline
config.assets.enabled = true
# config.assets.prefix = "/assets"
config.assets.paths << "#{Rails.root}/public/images"
config.assets.paths << "#{Rails.root}/public/stylesheets"
config.assets.paths << "#{Rails.root}/public/javascripts"

config.assets.version = '1.0'

И затем это в development.rb

# Do not compress assets
config.assets.compress = false
config.assets.debug = true

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

У меня есть следующий файл "all.css" в моем каталоге public / stylesheets:

/*
*= require ezform
*= require jquery-ui-1.8.9.custom
*= require thickbox
*= require yui-upload
*= require styles
*/

Я звоню из моего файла layouts / application.html.erb следующим образом:

<%= stylesheet_link_tag "all" %>

Загружая вещи в браузере, однако я не получаю стилей (или, в данном случае, javascript).Firebug и Chrome говорят мне, что файлы .css и .js ищутся в "/ assets" - это похоже на то, что конвейер ищет не все и связывает его так, как должен.

Ошибка выглядит такthis:

GET http://localhost:3000/assets/jquery-dependent.js 500 (Internal Server Error)

Если я переместлю «all.css» в / app / assets, он все равно не найдет его.Перемещение в / assets останавливает ошибку, но таблица стилей не компилируется, и я все еще не получаю никаких стилей в своем браузере.

В моем журнале также есть множество ошибок, которые выглядят так:

Started GET "/assets/defaults.js?body=1" for 127.0.0.1 at 2011-12-22 14:35:36 -0600
[2011-12-22 14:35:36] ERROR NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
    /Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/rack-1.3.5/lib/rack/handler/webrick.rb:71:in `service'
    /Users/kevin/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
    /Users/kevin/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
    /Users/kevin/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
cache: [GET /assets/defaults.js?body=1] miss, store
Served asset /defaults.js - 200 OK (1ms)

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

вздох Это было memcached.Я включил его (memcached -d), и теперь все мои активы появляются.Я не уверен почему, поэтому я хотел бы получить какое-то объяснение.В противном случае это работает.

0 голосов
/ 15 декабря 2011

Для корректной работы конвейера необходимо добавить кучу настроек в файлы разработки и настройки приложения.

Подробнее об этом смотрите в последнем разделе руководства по конвейеру .

После того, как вы это сделаете, я предлагаю изменить имена манифестов на application.cssи application.js, так как это имена по умолчанию, и вы начнете сталкиваться с меньшим количеством проблем, начиная с них.Отредактируйте свой вопрос, если он все еще не работает, и я посмотрю, смогу ли я помочь после этого.

...