我们将两个 rails 3.2.8 引擎放在一个 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