2012-07-03 2 views
0

У меня есть приложение для рельсов 3.2 на герою. Я попытался все, что могу найти, чтобы попытаться исправить тот факт, что javascripts не загружаются в режиме производства. Однако все работает отлично. Кроме того, при развертывании в 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 

ничего не получается, мне кажется, что он работает в режиме производства на моей локальной машине или на героку. однако он отлично работает в разработке.

+0

Вы пытались перезапустить Heroku? 'heroku restart' –

+0

да, это ничего не сделало –

ответ

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 он перечисляет все файлы активов. Я не уверен, есть ли какие-либо долгосрочные проблемы с этим.

1

На производственной коробке вы пробовали: RAILS_ENV rake assets:precompile

+0

да, я попробовал это несколько раз и раз ... но не повезло –

+0

Вы получаете сообщение об ошибке любого вида или просто неспособность обслуживать активы? – thisfeller

+0

Я не вижу сообщений об ошибках, но получаю ответ 402 на своей локальной машине при попытке загрузить активы. Это странно, потому что я вижу javascripts, сжатые в файле application.js в источнике. На heroku у меня есть ошибка, из-за которой прекомпиляция завершилась неудачно. Опять же, я вижу активы, хотя в файле .js. Очень странно –

Смежные вопросы