У меня есть метод класса, который мне нужно запускать каждые 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'
Запуск в моей эластичной среде beanstsalk, но я продолжаю получать ошибку
/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. Я думаю, как я ссылался на пучок и рельсы так, как я это делал, это не указывало на мое приложение, которое вызывало ошибку. Изменение команды на
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'
Уловка