2017-07-14 53 views
-1

Railsが新しく、私のアプリは本番環境でうまく動作しました。しかし、私は最近、Herokuのドメイン名を更新し、今私は以下のエラーが表示されます。私は "config.assets.initialize_on_precompile = false"をいくつかの同様の検索で推奨されているように追加しようとしましたが、これはトリックを行っていません。これを引き起こしていることに関するアイデアはありますか?ここで NameError:未定義のローカル変数またはメソッド `config 'for main:Object

Preparing app for Rails asset pipeline 
remote:  Running: rake assets:precompile 
remote:  rake aborted! 
remote:  NameError: undefined local variable or method `config' for main:Object 
remote:  /tmp/build_a19bfb10c80282a277c9ba26e985613b/config/environments/production.rb:95:in `<top (required)>' 
remote:  /tmp/build_a19bfb10c80282a277c9ba26e985613b/vendor/bundle/ruby/2.3.0/gems/activesupport-5.1.2/lib/active_support/dependencies.rb:292:in `require' 
remote:  /tmp/build_a19bfb10c80282a277c9ba26e985613b/vendor/bundle/ruby/2.3.0/gems/rake-12.0.0/exe/rake:27:in `<top (required)>' 
remote:  Tasks: TOP => environment 
remote:  (See full trace by running task with --trace) 
remote: ! 
remote: !  Precompiling assets failed. 
remote: ! 
remote: !  Push rejected, failed to compile Ruby app. 
remote: 
remote: !  Push failed 
remote: Verifying deploy... 
remote: 
remote: ! Push rejected to myapp. 
remote: 
To https://git.heroku.com/mysite.git 
! [remote rejected] master -> master (pre-receive hook declined) 
error: failed to push some refs to 'https://git.heroku.com/myapp.git' 
Aaron:myapp2$ 

は私.RBファイルです:

environment.rbに

# Load the Rails application. 
require_relative 'application' 

# Initialize the Rails application. 
Rails.application.initialize! 



ActionMailer::Base.smtp_settings = { 
    :port   => ENV['MAILGUN_SMTP_PORT'], 
    :address  => ENV['MAILGUN_SMTP_SERVER'], 
    :user_name  => ENV['MAILGUN_SMTP_LOGIN'], 
    :password  => ENV['MAILGUN_SMTP_PASSWORD'], 
    :domain   => 'myapp.herokuapp.com', 
    :authentication => :plain, 
} 

ActionMailer::Base.delivery_method = :smtp 

application.rb

require_relative 'boot' 

require 'rails/all' 

# Require the gems listed in Gemfile, including any gems 
# you've limited to :test, :development, or :production. 
Bundler.require(*Rails.groups) 

module Myapp2 
    class Application < Rails::Application 
    # Initialize configuration defaults for originally generated Rails version. 
    config.load_defaults 5.1 
    config.assets.initialize_on_precompile = false 
    # Settings in config/environments/* take precedence over those specified here. 
    # Application configuration should go into files in config/initializers 
    # -- all .rb files in that directory are automatically loaded. 



    end 
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 

    config.assets.initialize_on_precompile = false 

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

    # Show full error reports. 
    config.consider_all_requests_local = true 

    # Enable/disable caching. By default caching is disabled. 
    if Rails.root.join('tmp/caching-dev.txt').exist? 
    config.action_controller.perform_caching = true 

    config.cache_store = :memory_store 
    config.public_file_server.headers = { 
     'Cache-Control' => "public, max-age=#{2.days.seconds.to_i}" 
    } 
    else 
    config.action_controller.perform_caching = false 

    config.cache_store = :null_store 
    end 

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

    config.action_mailer.perform_caching = 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 

    # Suppress logger output for asset requests. 
    config.assets.quiet = true 

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

    # Use an evented file watcher to asynchronously detect changes in source code, 
    # routes, locales, etc. This feature depends on the listen gem. 
    config.file_watcher = ActiveSupport::EventedFileUpdateChecker 
end 

production.rbあなた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 

    config.assets.initialize_on_precompile = false 

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

    # Attempt to read encrypted secrets from `config/secrets.yml.enc`. 
    # Requires an encryption key in `ENV["RAILS_MASTER_KEY"]` or 
    # `config/secrets.yml.key`. 
    config.read_encrypted_secrets = true 

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

    # 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 = false 

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

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

    # 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 

    # Mount Action Cable outside main process or domain 
    # config.action_cable.mount_path = nil 
    # config.action_cable.url = 'wss://example.com/cable' 
    # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] 

    # 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 = [ :request_id ] 

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

    # Use a real queuing backend for Active Job (and separate queues per environment) 
    # config.active_job.queue_adapter  = :resque 
    # config.active_job.queue_name_prefix = "myapp2_#{Rails.env}" 
    config.action_mailer.perform_caching = false 

    # 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 

    # Use a different logger for distributed setups. 
    # require 'syslog/logger' 
    # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') 

    if ENV["RAILS_LOG_TO_STDOUT"].present? 
    logger   = ActiveSupport::Logger.new(STDOUT) 
    logger.formatter = config.log_formatter 
    config.logger = ActiveSupport::TaggedLogging.new(logger) 
    end 

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

config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    :port   => ENV['MAILGUN_SMTP_PORT'], 
    :address  => ENV['MAILGUN_SMTP_SERVER'], 
    :user_name  => ENV['MAILGUN_SMTP_LOGIN'], 
    :password  => ENV['MAILGUN_SMTP_PASSWORD'], 
    :domain   => 'myapp.herokuapp.com', #mydomain actually contains the realvalue 
    :authentication => :plain, 
    } 
+0

[Rubyローカル変数は未定義です](https://stackoverflow.com/questions/9671259/ruby-local-variable-is-undefined) – olibiaz

答えて

1

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    # ... 
} 

Rails.application.configure do 
    # ... 
end 
01の内側に行く必要があります

ブロックのように、configはそこにしか存在しません。

+0

ありがとうございました! –

関連する問題