Rails:jQuery在localhost中工作,但不在heroku上进行生产 [英] Rails: jQuery works in localhost but not in production on heroku

查看:125
本文介绍了Rails:jQuery在localhost中工作,但不在heroku上进行生产的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我到localhost:3000时,它可以工作,但只要我把它推到heroku上,它就不起作用。我究竟做错了什么?我正在使用邮箱宝石。



在推送到heroku之前,我已经运行了 bundle exec rake assets:precompile
任何建议,将不胜感激。



views / layout / _header.html.erb

 <脚本> 

$('#flash_wrapper')。hide();
$('#flash_wrapper')。fadeIn(slow,function(){
});
< / script>

< script>
$(document).ready(function(){
setTimeout(function(){
$('#flash_wrapper')。fadeOut(slow,function(){
$(this).remove();
})
},4500);
});


< / script>



.js

  // = require_self 
// =需要jquery
// =需要jquery_ujs
// =需要turbolinks
// = require_tree。
// =需要bootstrap-sprockets

Gemfile ...

  source'https://rubygems.org'

gem'rails','4.2.0'

gem'mailboxer','〜> 0.12.5'​​
gem'sass-rails','〜> 5.0'
gem'uglifier','> = 1.3.0'
gem'coffee-rails','〜> 4.1.0'
gem'jquery-rails'
gem'turbolinks'
gem'jbuilder','〜> 2.0'
gem'sdoc','〜> 0.4.0',组::doc
gem'cancan','〜> 1.6.10'
gem'stripe','〜> 1.21.0'
gem'friendly_id','〜> 5.1.0'
gem'formtastic','〜> 3.1.3'
gem'aasm','〜> 4.1.0'
group:development do
gem'byebug'
gem'web-console','〜> 2.0'
gem'spring'
gem'sqlite3'
end


gem'haml','〜> 4.0.6'
gem'simple_form','〜> 3.1.0'
gem'devise','〜> 3.4.1'
gem'paperclip','〜> 4.2.1'
gem'acts_as_votable','〜> 0.10.0'
gem'bootstrap-sass','〜> 3.3.4.1'
gem'will_paginate','〜> 3.0.7'
gem'will_paginate-bootstrap','〜> 1.0.1'
gem'simple_form-b​​ootstrap','〜> 1.0.1'

gem'dotenv-rails',group::development
gem'aws-sdk','< 2.0'

group:production,:staging do
gem'pg','〜> 0.18.1'
gem'rails_12factor','〜> 0.0.3'
结束

Production.rb

  Rails.application.configure do 
#此处指定的设置优先于config / application.rb中的设置。

#代码不会在请求之间重新加载。
config.cache_classes = true

#启动时加载代码。这种渴望将Rails和
#的大部分应用程序加载到内存中,从而允许线程Web服务器
#以及依赖写入时复制的那些更好地执行。
#Rake任务会自动忽略此选项的性能。
config.eager_load = true

#完全错误报告被禁用,缓存打开。
config.consider_all_requests_local = false
config.action_controller.perform_caching = true

#启用Rack :: Cache在应用程序前放置一个简单的HTTP缓存
#在启用此功能之前将`rack-cache`添加到您的Gemfile中。
#对于大规模生产使用,请考虑使用缓存逆向代理,如
#NGINX,清漆或鱿鱼。
#config.action_dispatch.rack_cache = true

#默认从`/ public`文件夹中禁用静态文件,因为
#Apache或NGINX已经处理了这个。
config.serve_static_files = ENV ['RAILS_SERVE_STATIC_FILES']。present?
config.serve_static_assets = true

#压缩JavaScript和CSS。
config.assets.js_compressor =:uglifier
#config.assets.css_compressor =:sass

#如果预编译的资源被遗漏,不要回退到资产管道。
config.assets.compile = true

#资产摘要允许您为所有资产设置远期HTTP过期日期,
#仍然可以通过消化参数。
config.assets.digest = true

#`config.assets.precompile`和`config.assets.version`已移至config / initializers / assets.rb

#指定服务器用于发送文件的标头。
#config.action_dispatch.x_sendfile_header ='X-Sendfile'#for Apache
#config.action_dispatch.x_sendfile_header ='X-Accel-Redirect'#for NGINX

#Force所有通过SSL访问应用程序,使用Strict-Transport-Security,并使用安全cookie。
#config.force_ssl = true

#使用最低的日志级别来确保问题出现时诊断信息
#的可用性。
config.log_level =:debug

#在所有日志行上添加下列标签。
#config.log_tags = [:subdomain,:uuid]

#为分布式设置使用不同的记录器。
#config.logger = ActiveSupport :: TaggedLogging.new(SyslogLogger.new)

#在生产中使用不同的缓存存储。
#config.cache_store =:mem_cache_store

#启用来自资产服务器的图片,样式表和JavaScript的服务。
#config.action_controller.asset_host ='http://assets.example.com'

#忽略不良的电子邮件地址,不要引发电子邮件传递错误。
#将其设置为true,并配置电子邮件服务器以立即投递,以提高投递错误。
#config.action_mailer.raise_delivery_errors = false

#为I18n启用语言环境回退(使查找任何语言环境回落到
#无法找到翻译时的I18n.default_locale )。
config.i18n.fallbacks = true

#将弃用声明发送给注册的侦听器。
config.active_support.deprecation =:notify

#使用默认日志格式化程序,以便不抑制PID和时间戳记。
config.log_formatter = :: Logger :: Formatter.new

#迁移后不要转储模式。
config.active_record.dump_schema_after_migration = false

config.paperclip_defaults = {
:storage => :s3,
:s3_protocol => 'http',
:bucket => ENV ['AWS_BUCKET'],
:s3_credentials => {
:access_key_id => ENV ['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV'''
}
} Development.rb

  Rails.application.configure do 
#此处指定的设置优先于config / application中的设置.RB。

#在开发环境中,您的应用程序的代码每次请求都会重新加载到
#上。这会减慢响应时间,但对于开发
#来说是完美的,因为当您更改代码时不必重新启动Web服务器。
config.cache_classes = false

#在启动时不要急于加载代码。
config.eager_load = false

#显示完整的错误报告并禁用缓存。
config.consider_all_requests_local = true
config.action_controller.perform_caching = false

#不在乎邮件程序是否无法发送。
config.action_mailer.raise_delivery_errors = false

#将弃用声明打印到Rails记录器。
config.active_support.deprecation =:log

#如果存在挂起的迁移,则在页面加载时引发错误。
config.active_record.migration_error =:page_load

#调试模式禁用了资源的连接和预处理。
#此选项可能会导致视图渲染出现明显延迟,并带有大量
#个复杂资产。
config.assets.debug = true

#资产摘要允许您为所有资产设置远期HTTP过期日期,
#仍然可以通过消化参数。
config.assets.digest = true

#在运行时为资产提供额外的错误检查。
#检查不正确声明的链轮依赖关系。
#引发有用的错误消息。
config.assets.raise_runtime_errors = true
config.action_mailer.default_url_options = {host:'localhost',port:3000}

#提示缺少翻译错误
#config.action_view.raise_on_missing_translations = true

config.paperclip_defaults = {
:storage => :s3,
:s3_protocol => 'http',
:bucket => ENV ['AWS_BUCKET'],
:s3_credentials => {
:access_key_id => ENV ['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV ['AWS_SECRET_ACCESS_KEY']
}
}
结束


解决方案

当您运行rake资源时:precompile,您是否记得将这些结果检入到git中。如果你没有,那么他们不会被推到heroku,因此不能被消耗。

您提出的修正可能不是您想要的长期目标,因为它会给您的服务器带来更多压力,并使它们像在开发中一样行动,每次请求资产是动态评估的。



为您的部署过程制定本地编译和检查部署的过程,或者没有编译任何资产并让heroku为您编译它们。 / p>

干杯

J


When I go to localhost:3000 it works but as soon I push it to heroku it doesn't work. What am I doing wrong? I am using mailboxer gem.

I've run bundle exec rake assets:precompile before pushing it to heroku. Any advice would be appreciated.

views/layout/_header.html.erb

<script>

$('#flash_wrapper').hide();
    $('#flash_wrapper').fadeIn("slow",function(){
    });
</script>

<script>
            $(document).ready(function() {
                setTimeout(function(){
                    $('#flash_wrapper').fadeOut("slow", function() {
                        $(this).remove();
                          })
                    }, 4500);
                });


</script>

application.js

//= require_self
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap-sprockets

Gemfile...

source 'https://rubygems.org'

gem 'rails', '4.2.0'

gem 'mailboxer', '~> 0.12.5'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'cancan', '~> 1.6.10'
gem 'stripe', '~> 1.21.0'
gem 'friendly_id', '~> 5.1.0'
gem 'formtastic', '~> 3.1.3'
gem 'aasm', '~> 4.1.0'
    group :development do
      gem 'byebug'
      gem 'web-console', '~> 2.0'
      gem 'spring'
      gem 'sqlite3'
    end


gem 'haml', '~> 4.0.6'
gem 'simple_form', '~> 3.1.0'
gem 'devise', '~> 3.4.1'
gem 'paperclip', '~> 4.2.1'
gem 'acts_as_votable', '~> 0.10.0'
gem 'bootstrap-sass', '~> 3.3.4.1' 
gem 'will_paginate', '~> 3.0.7'
gem 'will_paginate-bootstrap', '~> 1.0.1'
gem 'simple_form-bootstrap', '~> 1.0.1'

gem 'dotenv-rails', group: :development
gem 'aws-sdk', '< 2.0'

    group :production, :staging do
        gem 'pg', '~> 0.18.1'
        gem 'rails_12factor', '~> 0.0.3'
    end

Production.rb

Rails.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

  # Eager load code on boot. This eager loads most of Rails and
  # your application in memory, allowing both threaded web servers
  # and those relying on copy on write to perform better.
  # Rake tasks automatically ignore this option for performance.
  config.eager_load = true

  # Full error reports are disabled and caching is turned on.
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  # Enable Rack::Cache to put a simple HTTP cache in front of your application
  # Add `rack-cache` to your Gemfile before enabling this.
  # For large-scale production use, consider using a caching reverse proxy like
  # NGINX, varnish or squid.
  # config.action_dispatch.rack_cache = true

  # Disable serving static files from the `/public` folder by default since
  # Apache or NGINX already handles this.
  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
  config.serve_static_assets = true

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = :uglifier
  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
    config.assets.compile = true

  # Asset digests allow you to set far-future HTTP expiration dates on all assets,
  # yet still be able to expire them through the digest params.
  config.assets.digest = true

  # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb

  # Specifies the header that your server uses for sending files.
  # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX

  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  # config.force_ssl = true

  # Use the lowest log level to ensure availability of diagnostic information
  # when problems arise.
  config.log_level = :debug

  # Prepend all log lines with the following tags.
  # config.log_tags = [ :subdomain, :uuid ]

  # Use a different logger for distributed setups.
  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)

  # Use a different cache store in production.
  # config.cache_store = :mem_cache_store

  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
  # config.action_controller.asset_host = 'http://assets.example.com'

  # Ignore bad email addresses and do not raise email delivery errors.
  # Set this to true and configure the email server for immediate delivery to raise delivery errors.
  # config.action_mailer.raise_delivery_errors = false

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation cannot be found).
  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify

  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

  # Do not dump schema after migrations.
  config.active_record.dump_schema_after_migration = false

    config.paperclip_defaults = {
    :storage => :s3,
    :s3_protocol => 'http',
    :bucket => ENV['AWS_BUCKET'],
    :s3_credentials => {
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    }
  }
end

Development.rb

Rails.application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # In the development environment your application's code is reloaded on
  # every request. This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Do not eager load code on boot.
  config.eager_load = false

  # Show full error reports and disable caching.
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger.
  config.active_support.deprecation = :log

  # Raise an error on page load if there are pending migrations.
  config.active_record.migration_error = :page_load

  # Debug mode disables concatenation and preprocessing of assets.
  # This option may cause significant delays in view rendering with a large
  # number of complex assets.
  config.assets.debug = true

  # Asset digests allow you to set far-future HTTP expiration dates on all assets,
  # yet still be able to expire them through the digest params.
  config.assets.digest = true

  # Adds additional error checking when serving assets at runtime.
  # Checks for improperly declared sprockets dependencies.
  # Raises helpful error messages.
  config.assets.raise_runtime_errors = true
  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

  # Raises error for missing translations
  # config.action_view.raise_on_missing_translations = true

    config.paperclip_defaults = {
    :storage => :s3,
    :s3_protocol => 'http',
    :bucket => ENV['AWS_BUCKET'],
    :s3_credentials => {
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    }
        }
end

解决方案

When you ran rake assets:precompile, did you remember to check in those results into git. If you didn't then they won't be pushed to heroku and therefore not be able to be consumed.

The fix you suggested is probably not what you want long term, because it puts more strain on your servers and make them act like they would in development, where with every request the assets are 'evaluated' dynamically.

Work towards a procedure for your deploy where you are compiling locally and checking them in for the deploy, or not having any assets compiled and letting heroku compile them for you.

Cheers

J

这篇关于Rails:jQuery在localhost中工作,但不在heroku上进行生产的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆