这个问题似乎已被问过30种不同的方式,我尝试了所有解决方案而没有运气。
Rails 4应用程序在本地运行良好,但当部署到heroku(Cedar)时,javascript没有执行。我正在经历的流程:
1)RAILS_ENV =生产包exec rake资产:预编译 2)git add,然后提交 3)git push heroku master
我也试过在heroku和我的本地机器上破坏资产。
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_assets = true
config.assets.compress = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
config.assets.digest = true
config.assets.precompile += %w( '.woff', '.eot', '.svg', '.ttf' )
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
application.rb中
config.assets.version = '4.0'
config.assets.enabled = true
config.before_configuration do
env_file = File.join(Rails.root, 'config', 'local_env.yml')
YAML.load(File.open(env_file)).each do |key, value|
ENV[key.to_s] = value
end if File.exists?(env_file)
end
config.action_mailer.delivery_method = :postmark
config.action_mailer.postmark_settings = { :api_key => ENV['POSTMARK_API_KEY']}
config.assets.initialize_on_precompile = false
config.middleware.use Rack::Attack
我也尝试过添加config.assets.compile = true
的application.js
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require masonry/jquery.masonry
//= require masonry/jquery.imagesloaded.min
//= require masonry/jquery.infinitescroll.min
//= require masonry/modernizr-transitions
//= require underscore
//= require gmaps/google
//= require_tree .
当我在heroku上运行应用程序时,我可以通过开发人员工具看到javascript:
..但是js没有执行。我在哪里错了?
答案 0 :(得分:2)
尝试将//=require Turbolinks
移动到application.js的最底部,看看是否有帮助。此外,您可以尝试关闭turbolinks。 Turbolinks很酷,但并不总能与其他人玩得很好。
希望这有帮助!