Rails Engine 资源未预编译

yon*_*oon 5 production assets ruby-on-rails precompiled

我正在研究轨道并使用带轨道的发动机。在生产模式下,rails 没有加载引擎的编译资源,尽管我已经执行了:

$ RAILS_ENV=production bundle exec rake assets:clean assets:precompile
Run Code Online (Sandbox Code Playgroud)

如果有人知道这个问题请帮忙。

我的设置如下:

环境/生产.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`
Run Code Online (Sandbox Code Playgroud)

引擎/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
Run Code Online (Sandbox Code Playgroud)

Dee*_*bur 2

我在使用 Rails 4 引擎时遇到了同样的问题,我通过将以下代码添加到 engine.rb 来解决

Rails.application.config.assets.precompile += ['*.js', '*.css', '**/*.js', '**/*.css', '*.jpg',
                                '*.png', '*.ico', '*.gif', '*.woff2', '*.eot',
                                '*.woff', '*.ttf', '*.svg'] 
Run Code Online (Sandbox Code Playgroud)

我需要预编译所有资产,以便使用通配符。您可以指定文件。

第二个选项是您可以在主机应用程序 config/assets.rb上指定

Rails.application.config.assets.precompile += %w( engine_name/file_name )
Run Code Online (Sandbox Code Playgroud)