2011-12-14 5 views
1

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

У меня есть следующие в моей конфигурации/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,» в моем общедоступном каталоге/Стилей:

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

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

<%= stylesheet_link_tag "all" %> 

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

ошибка выглядит следующим образом:

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

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

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

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/[email protected]/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) 

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

ответ

1

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

+0

Возможно, вы используете memcached для своего магазина сеансов? –

0

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

Подробную информацию об этом вы найдете в последнем разделе pipeline guide.

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

+0

Да, до сих пор не повезло. Все настройки настроены соответствующим образом и до сих пор не повезло. Я отредактировал вопрос с другим синтаксисом файла установки. –