【问题标题】:After ruby update, crontab not working "bundler: not executable: bin/rails"ruby 更新后,crontab 不工作“捆绑器:不可执行:bin/rails”
【发布时间】:2019-04-25 10:44:06
【问题描述】:

ruby 版本从 2.3.1 更新到 2.3.7 后,crontab 在生产环境中无法执行(它在本地环境中工作)。在更新之前,它可以工作。

我正在使用 rbenv,所以我可以在 Internet 上找到解决此类问题的信息(如 ($rvm cron setup))不适合我的情况。

schedule.rb 代码为:

env :PATH, ENV['PATH']
env :GEM_PATH, ENV['GEM_PATH']
rails_env = ENV['RAILS_ENV'] || :development
require File.expand_path(File.dirname(__FILE__) + "/environment")
set :environment, rails_env
set :output, "#{Rails.root}/log/cron.log"

 every 1.day do
  runner "Reminder.reminder_mail"
end

奇怪的是,ruby 版本显示

$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [x86_64-linux]

但是环境显示不同的ruby版本..

$ bundle env
Ruby          2.3.1p112 (2016-04-26 revision 0) [x86_64-linux-gnu]

我不知道这是否是一个问题以及如何解决。

crontab 的当前设置是:

$ crontab -l
PATH=/home/franky/list/voendor/bundler/ruby/2.3.0/bin:/usr/local/bin:/home/franky/.gem/ruby/2.3.0/bin:/usr/local/rbenv/shims:~/.rbenv/shims:/usr/local/rbenv/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
GEM_PATH=””

0 0 * * * /bin/bash -l -c ‘cd /home/franky/list && bundle exec bin/rails runner -e production ‘'‘Reminder.reminder_mail’'’ » /home/franky/list/log/cron.log 2>&1’

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 尝试删除 Gemfile 锁定文件并再次捆绑安装
  • 感谢您的快速回复。我试了一下,然后
  • 感谢您的快速回复。我试了一下,然后报错``` /gems/devise-security-0.14.0/lib/devise-security.rb:3:in `': uninitialized constant DEVISE_ORM (NameError) ```正在显示。 ???这个宝石“设计安全”是否与 ruby​​ 2.3.7 不兼容?过去安装包时显示错误消息“ruby 版本必须为 2.3.7 或更高才能使用 devise-security”,所以我将 ruby​​ 更新到 2.3.7...困惑...

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


【解决方案1】:

我可以用“rake db:drop”和“rake db:create”解决这个问题!!! crontab 又开始工作了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2017-10-31
    • 2018-03-26
    • 1970-01-01
    相关资源
    最近更新 更多