我們將兩個rails 3.2.8引擎放在一個rails應用程序中。問題是ExecJS不喜歡佈局文件中javascript_inclide_tag的命名空間。這是導致錯誤的標籤:ExecJS :: Rails 3.2.8引擎中的RuntimeError with javascript_include_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環境。什麼可能導致錯誤?謝謝您的幫助。
UPDATE:
在engine.rb爲authentify,每一個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
剛剛更新與engine.rb初始化後。你的意思是兩個初始化器用於引擎驗證?你也可以解釋更多關於你的答案嗎?除了包含js庫之外,我們對js標籤瞭解不多。謝謝您的幫助。 – user938363
編輯 - 這是否更清楚?不知道你如何並行運行你的2個rails引擎,他們必須從某個地方獲取配置?如果是這樣,將1個初始化rb文件放在一個配置下,另一個初始化rb文件放在另一個配置下。 – mccannf
我們只在一個rails應用程序中安裝兩個rails引擎。謝謝。 – user938363