我正在使用Rails 5和Ruby 2.5,并部署到Amazon Elastic Beanstalk。
所有样式表和CSS文件都在Production中正确加载,但Javascript文件未在Production中正确加载。一切都在发展中完美无缺。
我认为问题在于,在制作中,我只看到一个.js文件,它将许多javascript文件挤在一起,这使得它无法正确加载。
当我在生产.js文件中搜索时,我遗漏了很多代码,这些代码存在于localhost上加载的那些单独的JS文件中。
我尝试过运行RAILS_ENV=production bundle exec rake assets:clean assets:precompile
,我可以在/ public / 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.read_encrypted_secrets = true
config.public_file_server.enabled = true
config.assets.js_compressor = :uglifier
config.assets.compile = false
config.log_level = :debug
config.log_tags = [ :request_id ]
config.action_mailer.perform_caching = false
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
config.active_record.dump_schema_after_migration = false
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.assets.digest = true
Rails.application.config.assets.precompile += %w( *.js ^[^_]*.css *.css.erb )
end
我的application.js文件:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require editable/bootstrap-editable
//= require editable/bootstrap2-editable
//= require editable/rails
//= require_tree .
editable
gem是x-editable,用于原位编辑。
更新
这是在application.html.erb文件中加载样式表和javascripts的方式:
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
答案 0 :(得分:2)
尝试config.assets.compile
false
到true
,然后就像下面一样
config.assets.compile = true
希望它能运作
答案 1 :(得分:0)
我通过手动下载开发中源代码中出现的每个JS文件,然后将它们上传到服务器,然后在代码中逐个手动导入它们来解决这个问题,就像在locahost截图中一样!