【问题标题】:rake db: commands show NoMethodError: undefined method `chomp' for nil:NilClass errorrake db:命令显示 NoMethodError:nil:NilClass 错误的未定义方法“chomp”
【发布时间】:2021-07-06 00:05:28
【问题描述】:

rake db: 命令执行时报错

warning: parser/current is loading parser/ruby26, which recognizes
warning: 2.6.7-compliant syntax, but you are running 2.6.2.
warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
C:/Ruby26-x64/bin/rake: No such file or directory - which yarn
rake aborted!
NoMethodError: undefined method `chomp' for nil:NilClass
C:/.../config/environment.rb:5:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)

这发生在 Windows10 机器上,但 mac 机器工作正常,没有错误。这是一个 Ruby on rails 应用程序。 这是 environment.rb:

# Load the Rails application.
require_relative 'application'

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

任何帮助将不胜感激。

编辑: 使用 --trace 标志运行 rake 的输出,以查看 NoMethodError 的确切来源 (rake --trace db:migrate):

rake --trace db:migrate
warning: parser/current is loading parser/ruby26, which recognizes
warning: 2.6.7-compliant syntax, but you are running 2.6.2.
warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
** Invoke db:migrate (first_time)
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
C:/Ruby26-x64/bin/rake: No such file or directory - which yarn
rake aborted!
NoMethodError: undefined method `chomp' for nil:NilClass
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mjml-rails-4.6.1/lib/mjml.rb:68:in `check_for_yarn_mjml_binary'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mjml-rails-4.6.1/lib/mjml.rb:44:in `valid_mjml_binary'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mjml-rails-4.6.1/lib/mjml/railtie.rb:13:in `block in <class:Railtie>'

【问题讨论】:

  • 我看到了几个问题。第 2 行:似乎您没有为您的应用程序使用正确的 Ruby 版本。第 4 行:好像您没有安装 yarn。第 6-8 行:我觉得您的数据库配置不正确或丢失。
  • 感谢您的回复@spickermann 关于警告 - 在 Mac 上设置时这些不是问题,并且之前没有在 Windows 上出现,因此当前问题不应与此相关。纱线也已成功安装。它可能与数据库有关。 Postgres 设置良好并连接到正确的端口和本地主机。由于 db:create 不起作用,我独立设置了数据库,并且应该具有正确的属性(匹配 database.yml)。我现在正在尝试测试是否不是这种情况。关于我可以运行的命令来测试它的任何想法?
  • 尝试使用--trace 标志运行rake,以查看NoMethodError 的确切来源。像rake --trace db:migrate 这样的东西。另外,您能像简单的rake -T 一样运行其他rake 命令吗?
  • @MikeGorski 我已经编辑了一些代码的帖子,请检查。所以,它似乎与mjl 有关。我可以运行其他 rake 命令,例如简单的 rake -T。
  • mjml-rails-4.6.1/lib/mjml.rb 中的第 68 行看来,使用这个 gem 在 Windows 上会出现问题。默认情况下,Windows 不支持 which 命令。您是否偶然使用了适用于 Linux 的 Windows 10 子系统?

标签: ruby-on-rails ruby windows ruby-on-rails-5 rake


【解决方案1】:

回答我自己的问题:

我和我的团队在调查中发现 Gemfile 和 Gemfile.lock 中指定的版本不同。版本已显式升级,因此我们必须加载预定义的 Gemfile.lock,并在同一版本上添加 gem 解决了这个问题。 因此,对于其他面临此问题的人,请检查(Gemfile 和 Gemfile.lock 的版本)。

PS。令我们惊讶的是,它实际上与数据库配置没有任何关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2019-08-14
    • 1970-01-01
    相关资源
    最近更新 更多