AD:
Herokuにて、Deploy後に、rake migrateするとエラーで進めなかったのでメモしておきます。
状況
|
$ heroku run rake db:migrate --app appName --trace rake aborted! undefined method `[]' for nil:NilClass /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/tasks/database_tasks.rb:136:in `purge' /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:361:in `block (3 levels) in <top>' </top> |
解決するまでにやったこと
Heroku Postgresを使用しているんですが、作成したものを一度削除し、再度作成しなおしました。
この時点で、エラー内容が変わりました。
|
$ heroku run rake db:migrate --app appName --trace FATAL: role "roleName" is not permitted to log in (PG::Error) |
configで確認するとDATABASE_URLするとHEROKU_POSTGRESQL_カラー_URLが違っていました。
|
$ heroku config --app appName DATABASE_URL: postgres://(AWSの接続) HEROKU_POSTGRESQL_カラー_URL: postgres://(AWSの接続) $ heroku pg:promote HEROKU_POSTGRESQL_カラー_URL --app appName |
この時点では、結局同じエラー”`[]’ for nil:NilClass”になりました。
最後にheroku restartしてPostgreSQLもrestartして接続ができるようになりましたー
でも、どうして、起きたのかはイマイチ不明。。。。
|
$ heroku restart --app appName --trace $ heroku pg:reset --app appName --trace |
ほかにもいろいろとPaaSのサービスを使用しているんですが、こういう時にBlackBox化するので、やっかいですねー
ちなみに、ログはpapertrailを使用しているんですが、今回の状況だとログをみても原因が追求できませんでした。
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 1 | Total: 1 | Feedly: 0
AD:
IPアドレスで制限したいシステムが、PagodaBox上で運営しているのですが、Pagodaさんがロードバランサーを介しているので、下記のようのよく使う.htaccessでのIP制限が実現できませんでした。
よくあるIP制限 by .htaccess
|
order allow,deny allow from all deny from 139.82.0.0/16 deny from 1.1.2.6 |
X-FORWARDED-FOR経由でのIP制限 by .htaccess
headerを確認したことを、X-FORWARDED-FORにIPがありましたので、最終的に下記のように実装しました。
|
SetEnvIf X-FORWARDED-FOR 124.169.224.1 denyIP SetEnvIf X-FORWARDED-FOR 124.169.4.1 denyIP order allow,deny allow from all deny from env=denyIP |
プレフィックスのIPアドレスを対応する
今回やっかいだったのは制限するIPアドレスの数がかなり多かったことです、しかもプレフィックス(Prefix)で指定されたIPアドレスなのでかなりの数でした。
それで、面倒でしたが一つ一つプレフィックスに併せて正規表現で対応したのですが、面倒でしたー
|
#124.120.0.0/15 SetEnvIf X-FORWARDED-FOR ^124.120.(?:[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5]).(?:[1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-4])$ denyIP #140.49.0.0/16 SetEnvIf X-FORWARDED-FOR ^140.149.(?:[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5]).(?:[1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-4])$ denyIP order allow,deny allow from all deny from env=denyIP |
まずプレフィックスのIPの範囲を今まで理解してなかったことも厄介でしたが、下記のサービスのお陰で助かりました
http://www.csgnetwork.com/ipinfocalc.html ← プレフィックスのIPの範囲を計算してくれるサービス
http://support.google.com/bin/answer.py?hl=en&answer=1034771 ← IPアドレスの正規表現
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 4 | Total: 4 | Feedly: 0
AD:
Thanks Appfog /tmp folder
|
$_SERVER['DOCUMENT_ROOT'].'/../tmp' |
My wp-config.php for WordPress
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
/** Setup for AppFog **/ $services = getenv("VCAP_SERVICES"); if($services !== false){ $services_json = json_decode($services,true); $mysql_config = $services_json["mysql-5.1"][0]["credentials"]; define('DB_NAME', $mysql_config["name"]); define('DB_USER', $mysql_config["user"]); define('DB_PASSWORD', $mysql_config["password"]); define('DB_HOST', $mysql_config["hostname"]); define('DB_PORT', $mysql_config["port"]); define('TMP_FOLDER', realpath($_SERVER['DOCUMENT_ROOT'].'/../tmp')); #local setting }else{ define('DB_NAME', 'DatabaseName'); define('DB_USER', 'UserName'); define('DB_PASSWORD', 'Password!'); define('DB_HOST', 'localhost'); define('TMP_FOLDER', '/tmp'); } |
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
Just delete ~/.pagodarc or edite it.
|
$ rm ~/.pagodarc or $ vi ~/.pagodarc :u: username :p: password |
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0