【问题标题】:Rails whenever not work with rvmRails 不能与 rvm 一起使用
【发布时间】:2018-07-08 12:39:15
【问题描述】:

我关注了这个问题https://github.com/javan/whenever/issues/714 并像这样设置我的schedule.rb

env :PATH, ENV['PATH']
set :output, {:error => '~/Desktop/z.error.log', :standard => '~/Desktop/z.standard.log'}

every 1.minute do
  runner 'Price.create'
end

然后我检查了我的crontab -l,它显示了以下命令

PATH=/Users/MyUserName/.rvm/gems/ruby-2.3.3@rails514/bin:/Users/MyUserName/.rvm/gems/ruby-2.3.3@global/bin:/Users/MyUserName/.rvm/rubies/ruby-2.3.3/bin:/Users/MyUserName/.rvm/bin:/usr/local/opt/mysql@5.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin

* * * * * /bin/bash -l -c 'cd /Users/MyUserName/Desktop/my-project && bundle exec bin/rails runner -e production '\''Price.create'\'' >> ~/Desktop/z.standard.log 2>> ~/Desktop/z.error.log'

# End Whenever generated tasks for: /Users/MyUserName/Desktop/my-project/config/schedule.rb at: 2018-01-30 02:13:32 +0800

它看起来很棒并且可执行,但是,我检查了错误日志并发现了以下错误。

捆绑器:加载命令失败:bin/rails (bin/rails)

Bundler::GemNotFound: Could not find erubi-1.7.0 in any of the sources
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/spec_set.rb:88:in `block in materialize'
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/spec_set.rb:82:in `map!'
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/spec_set.rb:82:in `materialize'
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/definition.rb:170:in `specs'
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/definition.rb:237:in `specs_for'
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/definition.rb:226:in `requested_specs'
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/runtime.rb:108:in `block in definition_method'
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/runtime.rb:20:in `setup'
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler.rb:107:in `setup'
  /Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/setup.rb:20:in `<top (required)>'
  /Users/MyUserName/.rvm/rubies/ruby-2.3.3/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  /Users/MyUserName/.rvm/rubies/ruby-2.3.3/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'

我有点困惑,想知道为什么我无法加载正确的 gem 路径。

环境:

OSX:10.13.2

Rails 5.1.4

Ruby 2.3.3

更新

我发现日志中的错误消息指出

/Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/spec_set.rb:88:in `block in materialize'`,

但是,我检查了我的crontab -l,它清楚地显示了这个设置

#sm start rvm
PATH="/Users/MyUserName/.rvm/gems/ruby-2.3.3@rails514/bin:/Users/MyUserName/.rvm/gems/ruby-2.3.3@global/bin:/Users/MyUserName/.rvm/rubies/ruby-2.3.3/bin:/Users/MyUserName/.rvm/gems/ruby-2.3.3@rails514/bin:/Users/MyUserName/.rvm/gems/ruby-2.3.3@global/bin:/Users/MyUserName/.rvm/rubies/ruby-2.3.3/bin:/Users/MyUserName/.rvm/bin:/usr/local/opt/mysql@5.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin"
GEM_HOME='/Users/MyUserName/.rvm/gems/ruby-2.3.3@rails514'
GEM_PATH='/Users/MyUserName/.rvm/gems/ruby-2.3.3@rails514:/Users/MyUserName/.rvm/gems/ruby-2.3.3@global'
MY_RUBY_HOME='/Users/MyUserName/.rvm/rubies/ruby-2.3.3'
IRBRC='/Users/MyUserName/.rvm/rubies/ruby-2.3.3/.irbrc'
RUBY_VERSION='ruby-2.3.3'
#sm end rvm

我很困惑为什么它仍然得到错误的 rvm 版本。 我错过了什么吗?

更新 2

在我更改了默认的gemset 之后,它就完美运行了。

我使用了这个命令

rvm use 2.3.3@rails514 --default

但是谁能告诉我如何在crontab 中放置正确的路径而不是设置 rvm 默认值?

【问题讨论】:

  • 如果您在命令行中键入 cd /Users/MyUserName/Desktop/my-project &amp;&amp; bundle exec bin/rails runner -e production '\''Price.create'\'' 会发生什么,这是 CRONTAB 正在运行的内容?也许这将有助于解决问题。
  • 完美运行。
  • 我发现错误信息指出/Users/MyUserName/.rvm/gems/ruby-2.3.3@rails4271/gems/bundler-1.16.1/lib/bundler/spec_set.rb:88:in block in materialize'`,并更新了我的问题!
  • 所以该命令从命令行工作,但不能通过 crontab,所以你需要做一些 rvm/crontab 故障排除。也许rvm.io/deployment/cronstackoverflow.com/questions/20954298/… 会有所帮助。

标签: ruby-on-rails ruby cron rvm whenever


【解决方案1】:

尝试运行

rvm cron setup

不确定它是否能解决问题,但曾经遇到过类似的问题,并且对我有用。祝你好运!

【讨论】:

  • 它可以帮助我在 crontab 中添加 PATHGEM_HOMEGEM_PATH 之类的内容,但它不会改变任何东西。我仍然收到相同的错误消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-07
相关资源
最近更新 更多