Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法'default';对于ActionMailer_Ruby On Rails_Ruby_Ruby On Rails 5_Actionmailer_Irb - Fatal编程技术网

Ruby on rails 未定义的方法'default';对于ActionMailer

Ruby on rails 未定义的方法'default';对于ActionMailer,ruby-on-rails,ruby,ruby-on-rails-5,actionmailer,irb,Ruby On Rails,Ruby,Ruby On Rails 5,Actionmailer,Irb,Rails 5 action mailer出现了一个奇怪的错误 # app/mailers/application_mailer.rb class ApplicationMailer < ActionMailer::Base default from: "from@example.com" layout 'mailer' end #app/mailers/application_mailer.rb 类ApplicationMailer

Rails 5 action mailer出现了一个奇怪的错误

# app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
  default from: "from@example.com"
  layout 'mailer'
end
#app/mailers/application_mailer.rb
类ApplicationMailer
内部评级

~/workspace/rails5>rails c ruby-2.4。1@rails5
通过过程45498中的弹簧预紧器运行
加载开发环境(Rails 5.1.2)
2.4.1:001>应用程序邮件
NameError:未初始化的常量邮件::TestMailer
来自app/mailers/application\u mailer.rb:1:in`'
来自(irb):1
2.4.1:002>应用程序邮件
NoMethodError:ApplicationMailer:Class的未定义方法“default”
来自app/mailers/application\u mailer.rb:3:in`'
来自app/mailers/application\u mailer.rb:1:in`'
来自(irb):2
2.4.1 :003 >
这是rails 5的默认脚手架

有两件很奇怪的事情发生了第一件是它总是告诉我未初始化的常量,然后trows default就不是一个方法了


只是想知道如何修复它,或者我是否应该降级到Rail 5.0,解决方案是,如果您有一个名为
mail
的模型,
ActionMailer
将首先获取该模型,而不是rails类。如果发生这种情况,则第一次失败,但第二次将加载rails类并尝试将它们组合在一起。允许子模块工作,但将主类视为猴子路径。

退出控制台,尝试
spring-stop
,然后再次运行控制台如果有疑问,请归咎于spring。退出控制台应该不是必要的,但
bin/spring-stop
通常会修复一些非常奇怪的Rails问题。@meagar by“退出控制台”,我的意思是退出rails控制台,而不是shell终端:)@m.simonborg啊,这更有意义。好吧,我尝试了
spring stop
bin/spring stop
bundle exec spring stop
并在irb中运行了
rails c
和上面的代码,得到了相同的错误。谢谢你的快速回复
~/workspace/rails5 > rails c       ruby-2.4.1@rails5
Running via Spring preloader in process 45498
Loading development environment (Rails 5.1.2)
2.4.1 :001 > ApplicationMailer
     NameError: uninitialized constant Mail::TestMailer
     from app/mailers/application_mailer.rb:1:in `<top (required)>'
     from (irb):1
2.4.1 :002 > ApplicationMailer
     NoMethodError: undefined method `default' for ApplicationMailer:Class
     from app/mailers/application_mailer.rb:3:in `<class:ApplicationMailer>'
     from app/mailers/application_mailer.rb:1:in `<top (required)>'
     from (irb):2
2.4.1 :003 >