Rails - Rails.root.join плохо себя ведет после развертывания
В моем каталоге app / assets есть каталоги javascript и таблицы стилей, как и в любом обычном приложении Rails.
Однако я хотел также иметь каталог плагинов.
Пример:
app/assets/plugins/myPlugin1/somefile.js
app/assets/plugins/myPlugin1/somefile.css
Дело в том, если я использую
<%= javascript_include_tag 'plugins/myPlugin1/somefile.js' %>
Я бы получил ошибку 404, как
/assets/javascripts/plugins/myPlugin1/somefile.js
не существует. Тогда я заметил, что dir «plugins» пытался получить доступ внутри javascripts. Я предполагаю, что это как-то связано с "javascript_include_tag".
После некоторых исследований я понял, что мне нужно включить эту строку в config / application.rb
config.assets.paths << Rails.root.join("app", "assets")
И это, похоже, сработало. На WEBRick, на разработке, все работало прекрасно.
Теперь я успешно развернул сервер, предварительно скомпилировал ресурсы и подумал, что готов к работе.
каталог
/public/assets/
был создан. Все в «app / assets / javascripts», «app / assets / stylesh, eets» и «app / assets / plugins» было предварительно скомпилировано в public / assets
ЧТО РАБОТАЕТ
app/assets/javascripts/login.js
был доступен в представлении, которое имело
<%= javascript_include_tag 'login.js' %>
ЧТО НЕ РАБОТАЕТ
Файлы, которые принадлежали "плагинам".
app/assets/plugins/myPlugin1/somefile.js
был предварительно скомпилирован в
public/assets/myPlugin1/somefile.js
Но когда я побежал
<%= javascript_include_tag 'plugins/myPlugin1/somefile.js' %>
он пытается получить доступ
/javascripts/plugins/myPlugin1/somefile.js
когда правильный путь, согласно моему опыту в разработке, будет:
/myPlugin1/somefile-(some hex hash).js
Итак, как вы можете видеть, в процессе производства я испытываю ту же проблему, что и когда я не добавил
config.assets.paths << Rails.root.join("app", "assets")
к application.rb
В чем может быть проблема?