2 つの Rails 3.2.8 エンジンを 1 つの Rails アプリにまとめます。問題は、ExecJS がレイアウト ファイルの javascript_inclide_tag の名前空間を好まないことです。エラーの原因となったタグは次のとおりです。
<%= javascript_include_tag 'authentify/application' %>
ここでauthentifyはRailsエンジン名です。エラーは次のとおりです。
ExecJS::RuntimeError in Authentify/sessions#new
Showing C:/D/code/rails_proj/engines/authentify/app/views/layouts/sessions.html.erb where line #6 raised:
(in C:/D/code/rails_proj/engines/authentify/app/assets/javascripts/authentify/sessions.js.coffee)
Extracted source (around line #6):
3: <head>
4: <title>Login</title>
5: <%= stylesheet_link_tag "authentify/application" %>
6: <%= javascript_include_tag "authentify/application" %>
7: <%= csrf_meta_tags %>
8: </head>
9:
名前空間 authentify ( <%= javascript_include_tag "application" %>
) を削除すると、ExecJS エラーが表示されなくなり、Rails アプリが動作します。js タグを持つ別の Rails エンジンでも同じエラーが発生します。
Windows環境を利用しています。エラーの原因は何ですか? 助けてくれてありがとう。
アップデート:
認証用の engine.rb では、すべての js ライブラリが次のようにリストされています。
initializer "Authentify precompile hook", :group => :all do |app|
app.config.assets.precompile += [
'authentify/application.css.scss', 'authentify/layout.css.scss', 'authentify/login.css.scss',
'authentify/paginate.css.scss', 'authentify/sessions.css.scss', 'authentify/sys_logs.css.scss',
'authentify/toolbar.css.scss', 'authentify/user_level_group_map.css', 'authentify/user_menus.css.scss',
'authentify/users.css.scss', 'authentify/application.js', 'authentify/sessions.js.coffee',
'authentify/sys_logs.js.coffee', 'authentify/user_level_group_map.js', 'authentify/user_menus.js.coffee',
'authentify/users.js']
end