Rails всякий раз, когда добавляет обратную косую черту к команде бегуна

Я использую каждый раз для задачи cron.

Это мой файл schedule.rb"

set :output, "#{path}/log/cron.log"
set :environment, 'develop'

every 2.minutes do
  runner "User.say_hello"
end

но он пишет в crontab с дополнительными обратными косыми чертами и не работает

script/rails runner -e develop '\''User.say_hello'\''

Но так и должно быть?

script/rails runner -e develop 'User.say_hello'

ОБНОВЛЕНИЕ

Это мой метод класса в классе User

def self.say_hello
   Mailer.cooperation("current_user").deliver!
end

Выдает эту ошибку

You did not specify how you would like Rails to report deprecation notices for your develop environment, please set config.active_support.deprecation to :log, :notify or :stderr at config/environments/develop.rb
    /home/sunloverz/.rvm/gems/ruby-1.9.3-p448@socposts/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:47:in `resolve_hash_connection': database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)
        from /home/sunloverz/.rvm/gems/ruby-1.9.3-p448@socposts/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:41:in `resolve_string_connection'
        from /home/sunloverz/.rvm/gems/ruby-1.9.3-p448@socposts/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:25:in `spec'

я уже добавила

  config.active_support.deprecation = :log

В журнале cron он печатает и не отправляет почту,
но Mailer.cooperation("current_user").deliver! отправляет почту из консоли rails

База данных.yml

development:
  adapter: postgresql
  encoding: utf8
  reconnect: false
  database: project_db
  pool: 5
  username: root
  password: lkjsdEEdfd
  host: localhost

person Aydar Omurbekov    schedule 13.03.2014    source источник
comment
Что значит, не работает? Как это не работает? Кроме того, вы спрашиваете нас, верен ли последний код, который вы нам показываете?   -  person Ecnalyr    schedule 13.03.2014
comment
если вы уже пытались запустить User.say_hello в консоли, и она работает нормально, попробуйте запустить whenever в терминале и скопируйте и вставьте команду, запускаемую cron. Скорее всего, вы увидите ошибку там. также проверьте журналы.   -  person jvnill    schedule 13.03.2014
comment
обратная косая черта в порядке. у меня возникла проблема с записью в файл журнала из-за разрешений сценария bin/rails. Убедитесь, что у него есть права доступа (должно быть 761). Я добавил это в свою задачу перезапуска в capistrano execute :chmod, 'u+x', "#{release_path}/bin/rails"   -  person sissy    schedule 13.03.2014
comment
я обновил свой вопрос   -  person Aydar Omurbekov    schedule 13.03.2014
comment
не увидел ваше редактирование вовремя, мой предыдущий комментарий бесполезен ... Но, как написано в вашем файле журнала, вы должны указать config.active_support.deprecation = :log в своем файле environment/develop.rb. Ты это пробовал?   -  person sissy    schedule 13.03.2014
comment
@sissy да, я пытался   -  person Aydar Omurbekov    schedule 13.03.2014
comment
как насчет вашей базы данных.yml? как он настроен?   -  person sissy    schedule 13.03.2014
comment
@sissy Добавил мою базу данных.yml, все работает нормально, кроме случаев, когда   -  person Aydar Omurbekov    schedule 13.03.2014


Ответы (1)


Проблема в том, что вы используете разные имена для одной и той же среды:

В вашем database.yml вы называете это development

в то время как вы выполняете свою задачу всякий раз со средой под названием develop

они должны соответствовать.

Это нормально, пока все работает нормально, потому что по умолчанию Rails использует имя development, поэтому, если вы не укажете какую-либо среду при миграции, по умолчанию будет использоваться development. Но вы запускаете задачу всякий раз со средой разработки, с которой на самом деле не связана какая-либо база данных.

Надеюсь, поможет.

person sissy    schedule 13.03.2014