【问题标题】:Trouble with new rails app新的 Rails 应用程序出现问题
【发布时间】:2016-11-06 11:46:31
【问题描述】:

我刚刚创建了一个新的 rails 应用程序(在 CL 上,使用 rails new),我使用的是 4.2.6,但似乎在我可以对应用程序执行任何操作之前,我遇到了错误。

首先...

/config/environments/development.rb:53:in `block in <top (required)>':
  uninitialized constant ActiveSupport::EventedFileUpdateChecker (NameError)

然后,一旦我将其注释掉...

/config/initializers/new_framework_defaults.rb:15:in `<top (required)>':
  undefined method `to_time_preserves_timezone=' for ActiveSupport:Module (NoMethodError)

一旦被注释掉...

 /config/initializers/new_framework_defaults.rb:21:in `<top (required)>':
  undefined method `halt_callback_chains_on_return_false=' for ActiveSupport:Module (NoMethodError)

最后...

.gem/ruby/2.2.3/gems/actionmailer-4.2.5/lib/action_mailer/base.rb:569:in `method_missing':
  undefined method `perform_caching=' for ActionMailer::Base:Class (NoMethodError)

我在 Google 上看到的所有内容都表明这些都是 Rails 5 相关的东西。我不确定如何绕过它们,或者如何创建仍然特定于 4.2.6 的应用。

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

tl;dr:重新创建 Rails 项目,提供特定的 Rails 版本。

详细说明Peter 的答案:通常会发生此错误,因为您安装的Rails 版本比.railsrctemplate.rb 中要求的版本更新。

如果是这种情况,当您运行rails new my_new_app 时,默认情况下将最新版本用于该过程的早期步骤,但是一旦安装了模板/railsrc 版本,后面的步骤将使用此版本。这会导致兼容性问题。

您可以通过将rails -v(在您调用rails new 的目录中)的输出与.railsrctemplate.rb 中的输出进行比较来验证这是您的问题。如果它们不同,有一个简单的解决方法:

重新创建您的 Rails 应用,在命令行调用中指定与 .railsrctemplate.rb 相同的 Rails 版本:
rails _4.2.5.1_ new my_new_app

【讨论】:

    【解决方案2】:

    如果您仍想使用 Rails 5,请在 development.rb 文件中注释以下行: config.action_mailer.perform_caching = false

    执行此操作后,您可能会得到:
    ActionView::Template::Error (couldn't find file 'ation_cable' with type 'application/javascript'

    然后在您的 cable.js 文件中从 //= require action_cable 中移除 =。

    【讨论】:

    • 这太棒了。注释掉那条线是如何工作的。我在 Rails 4.2.6 上。就像this
    猜你喜欢
    • 2016-01-04
    • 1970-01-01
    • 2017-05-15
    • 2013-09-30
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多