簡體   English   中英

NoMethodError:私有方法`warn'調用nil:NilClass

[英]NoMethodError: private method `warn' called for nil:NilClass

我正在嘗試使用capistrano為我的Rails應用程序實現服務器部署。 我是第一次做。 現在,我陷入了NoMethodError 我找不到問題

我的寶石文件包含以下寶石

group :development do
  gem 'capistrano', require: false
  gem 'capistrano3-puma', require: false
  gem 'capistrano-rails', require: false
  gem 'capistrano-bundler', require: false
  gem 'capistrano-rbenv', require: false
end

application.rb

require_relative 'boot'
require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "active_storage/engine"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "action_cable/engine"
require "sprockets/railtie"
# require "rails/test_unit/railtie"

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

module Server
  class Application < Rails::Application
   # Initialize configuration defaults for originally generated Rails   version.
    config.load_defaults 5.2
  end
end

現在執行命令時出現以下錯誤

cap production deploy

  deploy:assets:precompile
  01 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
  01 (in /home/ruby-user/server)
  01 rake aborted!
  01 NoMethodError: private method `warn' called for nil:NilClass
  01 /home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/railtie.rb:170:in `build_environment'
  01 /home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/railties-5.2.0/lib/rails/railtie.rb:190:in `public_send'
  01 /home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/railties-5.2.0/lib/rails/railtie.rb:190:in `method_missing'
  01 /home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:21:in `environment'
  01 /home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/sprockets-3.7.1/lib/rake/sprocketstask.rb:42:in `cached'
  01 /home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:46:in `manifest'
  01 /home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/sprockets-3.7.1/lib/rake/sprocketstask.rb:143:in `with_logger'
  01 /home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:67:in `block (2 levels) in d…
  01 /home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
  01 /home/ruby-user/.rbenv/versions/2.5.0/bin/bundle:23:in `load'
  01 /home/ruby-user/.rbenv/versions/2.5.0/bin/bundle:23:in `<main>'
  01 Tasks: TOP => assets:precompile
  01 (See full trace by running task with --trace)

/home/ruby-user/server/shared/bundle/ruby/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/railtie.rb的第170行具有以下語句

::Rails.logger.warn "Application uninitialized: Try calling YourApp::Application.initialize!"

請幫我整理一下。 謝謝

看來您必須在應用程序中設置Rails.logger.warn。 在環境文件中嘗試一下

Rails.logger = Logger.new(STDOUT)

我收到此錯誤,結果發現我在config /文件夾中包含config.ru的副本。 當它在那里時,它無權訪問此變量,因此會引發該錯誤。 只需刪除重復項即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM