javascript没有在带有rails 3.1的heroku上运行
我已经在Heroku上将rails 3.0应用程序迁移到3.1。它运行在cedar堆栈上,除了应用程序的javascript无法运行外,一切都很好。application.js文件已编译,看起来与应该的一样。可以访问myapp.com/assets/application.js。它就是跑不动 如果我在本地运行这个应用程序,javascript就可以工作,所以我怀疑一定有一些简单的配置问题没有解决。这是我的production.rb文件:javascript没有在带有rails 3.1的heroku上运行,javascript,ruby-on-rails-3,heroku,ruby-on-rails-3.1,Javascript,Ruby On Rails 3,Heroku,Ruby On Rails 3.1,我已经在Heroku上将rails 3.0应用程序迁移到3.1。它运行在cedar堆栈上,除了应用程序的javascript无法运行外,一切都很好。application.js文件已编译,看起来与应该的一样。可以访问myapp.com/assets/application.js。它就是跑不动 如果我在本地运行这个应用程序,javascript就可以工作,所以我怀疑一定有一些简单的配置问题没有解决。这是我的production.rb文件: FloridaBirdTrail::Application
FloridaBirdTrail::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
# Code is not reloaded between requests
config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = true
# Compress JavaScripts and CSS
config.assets.compress = true
# Send deprecation notices to registered listeners
config.active_support.deprecation = :notify
end
编辑
将production.rb的内容替换为development.rb的内容至少允许我的一些javascript运行(出于某种原因,gmap3无法工作)。但是,哪种设置起作用呢?您确定要将Heroku切换到Cedar堆栈吗?这里有一些升级文档
打开您的
应用程序.rb
文件,并确保您的捆绑机
require语句如下所示:
Bundler.require *Rails.groups(:assets)
默认情况下,它看起来像
# If you precompile assets before deploying to production, use this line
Bundler.require *Rails.groups(:assets => %w(development test))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)
我遇到了一些Javascript问题(Heroku上的服务器端,本地一切正常),当我 *将我所有的Javascript移到一个单独的文件中,而不是application.js
*从application.js中删除了require_tree,取而代之的是按名称调用我想要的每个javascript
*已从我的app/assets/javascript文件夹中删除bootstrap.js
我的猜测是编译在某种程度上把事情搞砸了。手动预编译对我来说很有效
bundle exec rake资产:在推送到heroku之前进行预编译 我希望您在最近一次Heroku推送之前对资产进行了本地预编译(如上面一个回复中所建议的)。
请检查您的系统是否阻止JavaScripts的执行。为此,在使用Heroku应用程序时打开控制台,并检查是否存在异常。如果您看到与JavaScripts相关的异常被阻止,这可能就是问题所在。在我的例子中,同样的情况也发生了,不幸的是,我无法对此采取任何措施,因为我没有管理员权限。嗨,谢谢,但我在cedar上。我已经看过Heroku的文档好几次了,但是没有找到任何关于为什么我的javascript没有运行的线索。你还做了哪些调试?如果在application.js中放置一个alert(),它会触发吗?当您访问myapp.com时,是否包含javascript?Firebug是否验证对资产的请求是否成功?javascript包含在标题中,我可以转到该资产并查看它,它与我在本地运行应用程序并且javascript工作时的情况相同。插入alert()调用无效。我现在去问Firebug,谢谢!firebug中没有控制台错误。我也可以跟踪heroku的日志,那里也没有错误。问题一定是当我在服务器上运行它时,一些javascript正在爆炸。但为什么会这样呢?