我有一个需要每15分钟运行一次的类方法,我有cron作业

0,15,30,45 * * * * /bin/bash -l -c 'cd /var/app/current && sudo /opt/rubies/ruby-2.3.5/bin/bundle exec /opt/rubies/ruby-2.3.5/bin/rails runner -e production '\''Structure.check_parking'\'' >> /var/app/current/log/cron_log 2>&1'


在我的弹性beantsalk环境中运行,但是我不断收到错误消息

/opt/rubies/ruby-2.3.5/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/lib/mysql2/client.rb:87:in `connect': Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)


我在生产环境中使用RDS服务器,因此尝试连接到本地mysql服务器很奇怪。

Rails应用程序已连接到数据库,我可以在数据库上执行所有正常功能,但是当我尝试运行此类方法时,出现此错误。

我的猜测是它尚未在生产中运行,但是我不确定,我的database.yml文件看起来像

development:
    adapter: mysql2
    database: bddatabase
    encoding: utf8
    username: bduser
    password: dbpass
    host: 127.0.0.1
    port: 3306

production:
    adapter: mysql2
    encoding: utf8
    database: <%= ENV['RDS_DB_NAME'] %>
    username: <%= ENV['RDS_USERNAME'] %>
    password: <%= ENV['RDS_PASSWORD'] %>
    host: <%= ENV['RDS_HOSTNAME'] %>
    port: <%= ENV['RDS_PORT'] %>


试图解决这一问题已经有一段时间了,非常感谢您的帮助!

最佳答案

我想通了,原来我的cron任务存在问题,这是自我的问题。我认为我以我的方式引用bundle和rails的方式并不是指向导致错误的应用程序。将命令更改为

0,15,30,45 * * * * /bin/bash -l -c 'cd /var/app/current && bundle exec rails runner -e production 'Structure.check_parking' >> /var/app/current/log/cron_log 2>&1'


绝招

关于mysql - cron作业中的Rails类方法在弹性beantalk中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48117500/

10-09 06:47