RubyOnRails を postgresql データベースで動かす方法 [Linux]

 RubyOnRails を postgresql データベースで動かす方法を探したのですが、なかなかなかったので、参考になればと思って投稿しました。
使用環境は、
ubuntu 14.10
postgresqlはネットから最新のものをダウンロードして、apacheとphpPgAdminもインストール
ruby 2.1.3p242
gem 2.2.2
Rails 4.1.8 でした。
これだと、Macでも同様の環境ですので、yosemiteでも同じだと思います。
それで、結構失敗しているのでまだ正確に整理していないのですが、一つの方法としてこうしました。
アプリケーション名は、myapp とすればデータベースのユーザはmyappとなるので、ブラウザからrole作成でやった方が面倒が無くて良いようです。パスワードも設定できますので便利でありrailsのディフォルトのデータベース名は、myapp_developmentなのでついでに作って置きます。
それには、一度ログアウトしてからmyappでログインして作りました。筆者は端末から操作しましたが、それはdrupalのインストールテキストを参考にしました。
ターミナルからのログイン方法はこうでした。postgresqlのインストール時点でユーザpostgresは登録済みなわけですから、$ sudo su - postgres でユーザを変更して
$ bin/psql でpostgresのパスワードを打てばログインできました。
railsのデータベースにアプリケーションユーザでログインする場合は、
$ bin/psql [データベース名] [ユーザ名(role名)] でいいようです。
余談ですが、postgresql は mysql と違って日本語を打つ方法が分からないので、一旦英語で作ってから phpPgAdminで日本語に直した方がよいようです。それでも、文字化けはしません。

これで $ rails new myapp --database=postgresql コマンドでアプリを作ってみると、
多分エラーが色々出ると思いますが、エラーメッセージに従って修正すれば何とかなりました。
取り敢えず完了したものとして、サーバーを起動します。$ rails server
ブラウザ localhost:3000 で確認すると、こんなエラーが出るはずです。
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
この場合の対処方法はネットにありましたので、その通りやってみました。
ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
それでも、また次のようなエラーが表示された場合:
PG::ConnectionBad: fe_sendauth: no password supplied
これは、config/database.yml ファイルの設定のパスワード記入項目を認識できない事が原因でしたので、コメントの # を外して記入しました。で、もう一度 $ rake db:migrate を実行して表示させると、上手くいけばこれが見れるはずです。:
Screenshot from 2014-11-20 11:15:25.png

Screenshot from 2014-11-20 11:17:43.png


後は generate scaffold コマンドで追加していくだけになり、色んな参考書を活用できます。
sqlite3 mysql がスタンダードかと思いますが、独自の先行phpを使用するので便利なこともあるようです。参考まででした。


nice!(0)  コメント(1)  トラックバック(0) 

nice! 0

コメント 1

StevBrut

generic isotretinoin acne find real visa cod only http://buycialisuss.com - Buy Cialis Lasix Turkey <a href=http://buycialisuss.com>Buy Cialis</a> Cialis Gр с–рўв˜nstig Kaufen
by StevBrut (2020-03-04 14:35) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

ubuntu server 14.10を..brew postgresqlとEDB_.. ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。