0

herokuにrails3.2アプリがあります。私は、javascriptが本番モードでロードされていないという事実を修正するために、見つけることができるすべてのことを試みました。ただし、開発ではすべてが正常に機能します。また、herokuにデプロイする場合、プリコンパイルは失敗します。ただし、prodのソースコードを見ると、javascriptsファイル(/assets/application-32fdbd115c5d59c7be2876c103063600.js)が読み込まれ、コンテンツが含まれていることがはっきりとわかります。

私は考えられるすべての設定を試し、読んだことがあります。どうしたらいいのかよくわかりません。これが現在production.rbにある私のセットアップです:

config.cache_classes = true
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.serve_static_assets = false
  config.assets.compress = false
  config.assets.compile = true
  config.assets.digest = true

  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify

およびenvironment.rb内:

# Load the rails application
require File.expand_path('../application', __FILE__)

# Initialize the rails application
App::Application.initialize!

application.rb:

require File.expand_path('../boot', __FILE__)

require "rails/all"

if defined?(Bundler)
  # 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)
end

module App
  class Application < Rails::Application
config.encoding = "utf-8"

    # Configure sensitive parameters which will be filtered from the log file.
    config.filter_parameters += [:password]

    # Enable escaping HTML in JSON.
    config.active_support.escape_html_entities_in_json = true
config.active_record.whitelist_attributes = true

    # Enable the asset pipeline
    config.assets.enabled = true

    # Version of your assets, change this if you want to expire all your assets
    config.assets.version = '1.0'

と私のgemfile:

gem 'rails', '3.2.6'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'pg'
gem 'mysql2'
gem 'thin'
gem 'activerecord-postgresql-adapter'
gem 'devise'
gem 'paperclip', '~> 3.0'
gem 'haml'
gem 'activeadmin'
gem "meta_search", '>= 1.1.0.pre'
gem 'aws-sdk', '~> 1.3.4'
gem 'acts_as_list'
gem 'stripe'
gem 'sass-rails', '~> 3.2.3'


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'coffee-rails', '~> 3.2.1'
  gem 'twitter-bootstrap-rails'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

group :development do
  gem 'debugger'
end

ローカルマシンまたはherokuの本番モードで動作させるように私は何もしていません。ただし、開発では問題なく機能します。

4

2 に答える 2

2

私はこれを修正する方法をついに理解しましたが、それがどれほど良い修正であるかはわかりません。基本的に、問題は.jsファイルのapplication.jsへの圧縮が問題を引き起こしていたことでした。Production.rbに私はこれを置きました:

  config.serve_static_assets = false

  # Compress JavaScripts and CSS
  config.assets.compress = false

  # Don't fallback to assets pipeline if a precompiled asset is missed
  config.assets.compile = true

  # Generate digests for assets URLs
  config.assets.digest = true

  config.assets.debug = true

これで問題が修正されました。ただし、application.jsの代わりに、すべてのアセットファイルが一覧表示されるようになりました。これに長期的な問題があるかどうかはわかりません。

于 2012-07-03T19:06:01.920 に答える
1

プロダクションボックスで試しましたか:RAILS_ENV rake assets:precompile

于 2012-07-03T13:03:45.080 に答える