我在生产服务器中'rake资产:预编译'并且资产是在公共/资产文件夹中生成的,但是rails使用像domain.com/javascript/application.js这样的网址搜索资产,为什么不喜欢domain.com/assets/ application.js,因为asssets存在于assets文件夹中。当我在生产环境中部署应用程序时,找不到404错误的资产。另外,为什么.sprocket-manifest文件没有在assets文件夹中创建。
production.rb的配置如下: -
Rails.application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = true # ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier
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
config.active_record.dump_schema_after_migration = false
end
我一直在使用rails 4.2.8。谢谢。
答案 0 :(得分:1)
在rails 4中,您需要进行以下更改:
config.assets.compile = true config.assets.precompile = [' .js',' .css','* .css.erb']
这适用于我。使用以下命令预编译资产
RAILS_ENV =生产包exec rake资产:预编译
祝你好运!