【发布时间】: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