Я следил за этой проблемой 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/[email protected]/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'
Я чувствовал себя немного смущенным и задавался вопросом, почему я не могу загрузить правильный путь к драгоценному камню.
Окружающая среда:
ОС X: 10.13.2
Рельсы 5.1.4
Руби 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/[email protected]/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 по умолчанию?
PATH
,GEM_HOME
,GEM_PATH
в crontab, но ничего не меняет. Я все еще получаю то же сообщение об ошибках. 29.01.2018