首页 > 解决方案 > Rails runner 找不到文件,Rails 版本 5.1.3

问题描述

我有一个使用 Rails 5.1.3 正常运行的常规 Rails 项目。

我最近发现了 Rails runner 并按照文档(https://guides.rubyonrails.org/command_line.html#rails-runner)进行了尝试。

但是,我的 Rails 跑步者似乎无法处理文件。我有一个文件 lib/manual_exports/my_export.rb,它确实存在。我试着跑步

rails runner lib/manual_exports/my_export.rb

rails runner ./lib/manual_exports/my_export.rb

我总是得到回应

Please specify a valid ruby command or the path of a script to run.
Run 'bin/rails runner -h' for help.

undefined local variable or method `lib' for #<Rails::Command::RunnerCommand:0x00007fb13008b310> 
# (or `.' instead of `lib')

这听起来好像 runner 认为我的路径是一个 Ruby 命令,但事实并非如此。

当我尝试直接读取文件时

rails runner "eval(File.read 'lib/manual_exports/my_export.rb')"

或者

rails runner "eval(File.read '#{Rails.root}/lib/manual_exports/my_export.rb')"

在我按下 ctrl+C 之前,我根本没有得到任何答案,这给了我堆栈跟踪

/Users/marion/.rvm/gems/ruby-2.4.2/gems/railties-5.1.3/lib/rails/commands/runner/runner_command.rb:37:in `read': No such file or directory @ rb_sysopen - lib/manual_exports/my_export.rb (Errno::ENOENT)

我尝试直接运行命令(rails runner 'puts "hi"'),它有效。然而,它花了非常长的时间——大约两秒钟。谁能向我解释这里发生了什么?谢谢!

标签: ruby-on-railsrunner

解决方案


推荐阅读