我正在研究导轨并使用带导轨的发动机。 在生产模式下,rails没有加载引擎的编译资产, 虽然我执行了:
$ RAILS_ENV=production bundle exec rake assets:clean assets:precompile
如果有人知道这个问题,请帮忙。
我的设置如下:
环境/ production.rb
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = false
config.assets.compile = false
config.assets.digest = true
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new`
发动机/ XXX / LIB / XXX / engine.rb
引擎的选项是 - 可安装
module Moderna
class Engine < ::Rails::Engine
isolate_namespace xxx
# parent company asset precompile
initializer "xxx.assets.precompile" do |app|
app.config.assets.paths << Rails.root.join("app", "assets", "fonts")
app.config.assets.precompile << %w(
xxx/*.css xxx/fancybox/*.css xxx/skin/*.css xxx/google-code-prettify/*.css
xxx/*.js xxx/flexslider/*.js xxx/google-code-prettify/*.js
xxx/portfolio/*.js xxx/quicksand/*.js
xxx/*.svg xxx/*.eot xxx/*.woff xxx/*.ttf
xxx/customicon/*.svg xxx/customicon/*.eot xxx/customicon/*.woff xxx/customicon/*.ttf
)
app.config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/
end
end
end
答案 0 :(得分:2)
我遇到了与Rails 4引擎相同的问题,我通过向engine.rb添加以下代码解决了这个问题
Rails.application.config.assets.precompile += ['*.js', '*.css', '**/*.js', '**/*.css', '*.jpg',
'*.png', '*.ico', '*.gif', '*.woff2', '*.eot',
'*.woff', '*.ttf', '*.svg']
我需要预先编译所有资产,以便使用通配符。您可以指定文件。
您可以在主机应用程序上指定第二个选项 的配置/ assets.rb 强>
Rails.application.config.assets.precompile += %w( engine_name/file_name )
答案 1 :(得分:2)
rails engine getting started guide建议在您的engine.rb
中包含以下内容initializer "engine_name.assets.precompile" do |app|
app.config.assets.precompile += %w( admin.js admin.css )
end
它对我有用。
答案 2 :(得分:0)
EDIT 刚刚意识到这个问题有点老了。如果您将 app/assets/config/my_component_manifest.js
文件添加到引擎,然后使用它来指定资产入口点,以下内容将适用于您。
您也可以将其放入 engine.rb
文件中:
module MyComponent
class Engine < ::Rails::Engine
config.assets.precompile += %w( my_component_manifest.js )
end
end