質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2587閲覧

Rails のdevelopment環境でのcron実行時のmysqlエラーについて

rubysyoshinsya

総合スコア35

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2016/07/28 06:58

ローカル環境(development)でのCronの実行時にmysql.ymlの読み込みがdevelopmentの設定でなくproductionの設定になります。
developmentの設定で実行させたいのですが、ここを確認するなど良いなどあればご教授頂けると幸いです。

Cronはgemのwheneverを利用しています。

$ mysql_config --socket /tmp/mysql.sock

↑ターミナルにてmysqlの接続先を確認。

rails c にてCronに設定しているプログラムを動かすと、問題なくDBにアップロード等を行えます。

Cronで動かす場合も途中処理は問題なく実行されるのですがDBの読み込みを行うとエラーとなります。

↓mysql.ymlの設定です。

mysql.yml

1default: &default 2 adapter: mysql2 3 encoding: utf8 4 collation: utf8_general_ci 5 pool: 5 6 username: root 7 8 9development: 10 <<: *default 11 database: aiueo_development 12 password: 13 socket: /tmp/mysql.sock 14 15production: 16 <<: *default 17 database: aiueo_production 18 password: <%= ENV['MYSQL2_PASS'] %> 19 socket: /var/lib/mysql/mysql.sock 20

エラー内容など

.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/mysql2-0.3.20/lib/mysql2/client.rb:70:in `connect': Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (Mysql2::Error)

↑本当であればsocketは"development"の" /tmp/mysql.sock "になると思うのですが。。。productionの方を読み込んでいます。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thinca

2016/07/28 09:37

`whenever` をお使いでしょうか?
thinca

2016/07/28 09:38

あ、すいません。書いてありましたね。
guest

回答1

0

ベストアンサー

whenever ではデフォルトでは RAILS_ENVproduction になります。
whenever#README

job_type :command, ":task :output" job_type :rake, "cd :path && :environment_variable=:environment bundle exec rake :task --silent :output" job_type :runner, "cd :path && bin/rails runner -e :environment ':task' :output" job_type :script, "cd :path && :environment_variable=:environment bundle exec script/:task :output"

:environment_variable will default to 'RAILS_ENV'. :environment will default to 'production'.

例えば rake task で RAILS_ENVを指定したい場合は以下のようにします。

ruby

1rake 'mytask', environment: 'development'

投稿2016/07/28 09:48

thinca

総合スコア1864

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rubysyoshinsya

2016/07/28 09:54

ご回答有難う御座います。 なるほど、デフォルトで"production"になるのですね。。。 本当に有難う御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問