Mysql cron作业中的Rails类方法在elastic beanstalk中不起作用

Mysql cron作业中的Rails类方法在elastic beanstalk中不起作用,mysql,ruby-on-rails,amazon-web-services,amazon-elastic-beanstalk,amazon-rds,Mysql,Ruby On Rails,Amazon Web Services,Amazon Elastic Beanstalk,Amazon Rds,我有一个类方法,我需要每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/curre

我有一个类方法,我需要每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'
在我的elastic Beanstalk环境中运行,但我不断得到一个错误

/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'] %>
开发:
适配器:mysql2
数据库:bddatabase
编码:utf8
用户名:bduser
密码:dbpass
主持人:127.0.0.1
港口:3306
制作:
适配器:mysql2
编码:utf8
数据库:
用户名:
密码:
主持人:
端口:

我已经想了一段时间了,非常感谢您的帮助

我想出来了,结果发现我的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'

诀窍是什么?

你能告诉我你是如何设置cron任务的吗?这是rails特有的问题吗?或者只是一个如何设置cron作业的问题?对不起,应该更具体一些。我更想知道你是如何在Elastic BeanstalkGotcha中设置cron作业的,我主要关注这一点。理想情况下,您应该有一个单独的服务器,只运行cronjob的,但对于我们来说,在给定的时刻,我们只有一个实例。eb中cronjobs的问题是,当创建一个新实例时,cron作业现在将在这两个实例上运行。有很多方法可以解决这个问题,但理想情况下,您应该有一个单独的实例。