0

У меня возникла проблема с использованием настраиваемой настройки RackFilter и возможность правильной установки или использования рейка: функция предварительной компиляции в процессе производства. Моя среда выглядит следующим образом:Рельсы с RackFilter и активами

jruby 1.7.3 
Rails 3.2.12 

Отображение стойки фильтр, который я использую следующим образом:

<filter-mapping> 
    <filter-name>RackFilter</filter-name> 
    <url-pattern>/r/*</url-pattern> 
</filter-mapping> 

Чтобы использовать трубопровод активов, без использования PreCompile для развития, я добавляю следующее application.rb

config.assets.prefix = "/r/assets" 

Все это прекрасно работает в режиме разработки. Проблемы возникают, когда я пытаюсь запустить приложение в режиме производства. Когда я делаю активы: прекомпилировать моя структура каталогов активов выглядит следующим образом:

/public/r/assets 

и когда я пытаюсь запустить приложение, я получаю следующее сообщение об ошибке:

ActionView::Template::Error (application.css isn't precompiled): 

, который указывает мне в направлении, приложение не правильно размещения manifest.yml файла, так что я добавить следующие строки в моем production.rb:

config.assets.manifest = Rails.root.join («публичные/г/активы»)

Что я получаю следующее сообщение об ошибке:

[WARN] 404 - GET /r/assets/application-3b09aaf17ec25843ede11b1160ca46ab.css 

Я попытался изменить production.rb включать:

config.assets.prefix = "public/r/assets" 

, но до сих пор получить

[WARN] 404 - GET /public/r/assets/application-3b09aaf17ec25843ede11b1160ca46ab.css 

Таким образом, в этой точке I у меня заканчиваются идеи и могут использовать любые предложения или идеи. Большое спасибо!

+1

, когда вы выполняете 'пакетные функции rake assets: precompile', он не должен создавать каталог в другом каталоге. Я полагаю, что в вашем общедоступном каталоге должно быть «public/assets». Также вы пробовали делать «rake assets: precompile RAILS_ENV = production». Кроме того, для вашего production.rb необходимо установить следующий параметр: 'true' -' config.assets.compile = true'. – David

+0

Благодарим вас за быстрый ответ @David.Я переместил папку с вашими ресурсами, чтобы жить в public/assets вместо public/r/assets. Я также изменил свою конфигурацию в своем production.rb, чтобы использовать config.assets.compile = true, хотя я не хотел менять этот параметр в первую очередь, потому что из того, что я прочитал, это действительно снизит производительность. Теперь я получаю сообщение об ошибке: ActionView :: Template :: Error (Файл для импорта не найден или нечитаем: foundation/foundation-global. Поэтому я прилагаю все усилия, чтобы работать с этим, чтобы определить, будет ли ваше решение работать. Спасибо! –

+0

Кроме того, я считаю, что активы: precompile создает структуру общедоступной/r/assets из-за моего config.assets.prefix = "/ r/assets", что необходимо, так как я использую rackfilter из "/ r/* " –

ответ

0

Проблема заключалась в том, что каталог public/assets должен располагаться в корневой директории войны, чтобы tomcat мог находить активы. Так что теперь структура каталогов выглядит

Как это:

войны
- активы
- META-INF
- WEB-INF

Вместо этого:

войны
- META-INF
- WEB-INF
- - общественный
- - - assets

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