2013-06-06 3 views
2

У меня есть эта специфическая проблема. На настройке (LARGE) rails у меня есть базовый проект в /app/assets/reader/. Все мои ресурсы javascript динамически преобразуются в reader.js, это отлично работает. Мои файлы i10n в locale/ не играют хорошо, потому что они не нуждаются в предварительной компиляции. В разработке он отлично работает, но в производстве они недоступны.Рельсовые активы отсутствуют в продаже

В моем /app/views/layouts/reader.html.erb файле у меня есть следующие строки:

<%= javascript_include_tag "reader" %> 
<%= javascript_include_tag "locale/en" %> 

Проблема заключается в том, что нижний приводит к 404 ошибки на производстве.

Я попытался следующие альтернативы:

<%= javascript_include_tag "en" %> 
<%= javascript_include_tag "locale/en" %> 
<%= javascript_include_tag "reader/locale/en" %> 

Ни один из них не кажется, работа. Последний даже разразился.

PS: в applicaton.rb у меня есть:

... 
config.assets.precompile += [ 
    ... 
    'reader.js', 
    ... 
] 
... 
config.assets.paths << File.join(Rails.root, 'app', 'assets', 'reader', 'locale') 
+0

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

+0

Сделано, ужасно много раз. Еще нет радости. –

+0

Решил! '' locale/*. js ', 'отсутствовал в массиве' config.assets.precompile' в 'application.rb'. –

ответ

0

Решение было не в javascript_include_tag, а в порядке, в котором config.assets.precompile был отформатирован.

По умолчанию Rails сканирует любую подпапку DIRECTLY в пределах assets. Это означало, что файл локали должен был быть добавлен как locale/en.js в config.assets.precompile, и что линия config.assets.paths вообще не нужна.

Способ сканирования подлогов в рельсах действительно конкретный и важный. Правильно, и все должно работать как ветер. Как только вы знаете, как это работает, на самом деле он становится достаточно мощным.

Pro tip: Я закончил с использованием locale/*.js в сочетании с <%= javascript_include_tag "locale/#{I18n.locale}" %>, так как у меня на самом деле много файлов локали.

1

Вы удалили все файлы в папке публичного каталога затем перезапустить сервер? Также внутри вашей папки Js у вас есть папка

читателя/локаль/en.js

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

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