18日目 データベース(開発環境)作成[JRuby 9.1.17 &PostgreSQL]①
おはようございます。
昨日までで、Railsアプリを新規作成し、database.ymlからデータベースにPostgreSQLを指定して、development環境からそのデータベースに接続&新規作成できるように設定を行なったところです。
今日はその設定を行なうことができたので、Railsからデータベースを新規作成できるかやってみようと思います。
なお、今回の開発時の環境は以下の通りです。
・Windows 10
・JRuby 9.1.17
・Rails 4.2.4 (※「bundle install」コマンドにてインストール)
・bundler 1.17.3 (※バージョン「2.3.15」も同時にインストール済)
・PostgreSQL 10.21
Railsからデータベースを作成する際のコマンド
今回の開発時にて用いるコマンド
先にどんなコマンドを用いるべきか、以下に載せますね。
jruby -S bundle _1.17.3_ exec rake db:create
Railsからデータベースを作成するコマンドは、本当ならばもっとシンプルなものになっているはずなのですが、今回の開発時の環境に合わせていると、色々と追加しないとならなくなったため、その説明を以下に記載します。
説明を読むのが手間なかたは読み飛ばしていただいて、上記のコマンドを用いる、ということだけ認識していただけましたら幸いです。
「rake」について
Railsからデータベースを新規作成する際のコマンドは、実はRailsのバージョンによって少し異なることがあります。
例えば、Railsのバージョンが5以上であれば、
rails db:create
ですが、Railsのバージョンが5よりも前ならば、
rake db:create
となり、「rails」が「rake」コマンドになります。「rake」とはRubyにおけるビルドツール(ビルドプログラム)であり、ビルドツールとは何らかの言語にて書いたソースコードを二進数に変換して、コンピュータが二進数を読み取って内容を理解して、内容を基にコンピューターが動くようにいたします。
ただ、Rails5以降は「rake」コマンドは「rails」コマンドに統一されるようになったそうです。(前は「rake」コマンドと「rails」コマンドを使い分けていました。)
今回の場合は、「Rails 4.2.4」を用いるため、
rake db:create
を使います。
JRubyを使うことを明示する必要がある
また、今回はRubyはRubyでも、C言語で動くRubyではなく、Javaで動くJRubyを用います。わたしのPCの環境では、C言語で動くRubyも、Javaで動くJRubyもどちらもインストールされており、Javaで動くJRubyを用いるときはコマンドの先頭にいつも「jruby -S」を付けております。
ですので、今回の環境では
rake db:create
ではなく、
jruby -S rake db:create
というように先頭に「jruby -S」を付けて、コンピュータにJRubyを用いることを明示する必要があります。
「bundle」のバージョンについて
さらに、「bundler」のバージョンも明示する必要があります。
実はわたしのPCの場合、「bundler」がバージョン違いで2つインストール済です。(詳しくは以前に書いた以下の記事の通りです。)
わたしのPCの環境では「bundler」には以下のバージョンがインストール済ですが、
・1.17.3
・2.3.15 (←こちらのほうが新しい)
「bundler」のバージョンを指定せずに、前述で触れたコマンド(以下に再度載せます)を入力してみると、
jruby -S rake db:create
以下のようにデータベース作成時に「bundler」のバージョンが新しいほうを指定してしまい、エラーが発生するようです。
![](https://assets.st-note.com/img/1655247131455-RkfC1eqAJy.png?width=1200)
どうやら以下の記事によると、「bundler」のバージョンは特に指定しなければ自動的に新しいものを指定するようです。
今回開発で用いる「bundler」のバージョンのみインストールして、それ以外のバージョンは全てアンインストールさせておけば、わざわざ「bundle _(バージョン番号)_ exec」を含める必要はないのですが、他にも開発しているものがあって、今回の開発で用いる「bundler」のバージョンとは異なるものを用いているため、アンインストールするわけにもいきませんでした。
そこで以下のように「bundle _(バージョン番号)_ exec」もコマンドに含めることにいたしました。
jruby -S bundle _1.17.3_ exec rake db:create
データベース作成時には上記のコマンドにてやってみることにします。
おわりに
今日もここまで読んでくださって、ありがとうございました。
今日の作業時間に余裕がなくなりましたので、続きは次のターンにします。
次のターンへ続く。