A note of a person who is learning programming, SakaTaQ

ロック好きのプログラミング学習

Railsでのプロジェクトの作成

Ruby on Railsというフレームワークを使用したアプリケーションを作成する際に、どういった手順でコマンドを入力して行ったか毎回忘れがちなので、曖昧理解なまま当たり前にやっていることも含め、色々と調べながら書き残していくことにしました。

Railsプロジェクトの作成

% rails new APP_PATH [option]
% rails new {アプリの名前} {オプション}

例)
% rails new app-name

当初はアプリの名前と聞いてもよく理解できなかったですが、とりあえず起こることはapp-nameというディレクトリが作成され、railsでアプリを作成するのに必要なファイルなどがそのディレクトリの中に生成されるということ。
オプションについては後述。


参考にさせていただいたこちらの記事ではシステム側のgemに入れるのではなく別に格納した方がいいという旨の記事を見かけました。
自分はvendor/bundle指定をプロジェクトディレクトリ毎に行ったことはないので、基本的にインストールされたgemはシステム側に入っていたのですね。
因みに使用していなくてもnewした時点でvendorディレクトリは生成されているようです。
この辺りのキーワードで調べれば細かいことを知ることができそうですが...今はいいかな😅

この方法では以降のrailsコマンドはbundle execを介して呼び出しています。

% bundle exec rails new . -B

newの後にアプリケーションディレクトリ名ではなく.を記述することで、先ほどの参考記事のように、gemの設定も含めて作成したディレクトリにそのままrailsのアプリケーションのファイルを生成してくれるようです。
-Bもしくは--skip-bundleの部分は後述するオプション。これを書かないとbundle installが実行されてしまい、Ruby環境にgemがインストールされてしまう。システム側に入れない意図を考えると、こちらの方法ではこのオプションは必須っぽい。

プロジェクト作成時のオプション

プロジェクトを作成する際にはコマンドにオプションを記述することで、使用するデータベースを決めることができる。
また、検索するまで知りませんでしたが、予めturbolinksを切る方法やテストで使用するデフォルトのgemも切り替えできるようです。
% rails new -hでヘルプを表示し、オプションで使用できるコマンドが確認できます。
とりあえずザッと見てよく使いそうなオプションを書いてみました。

  • -d DATABASE もしくは --database=DATABASE
    DATABASEには使用するデータベース名を指定。自分はよくmysqlを使うので-d mysqlのように書く。指定なしの場合、Railsのデフォルトデータベースsqliteが指定される(後で変更可能)。
  • --skip-turbolinks
    turbolinksをオフにすることができる。jQueryを使う時にハマったことが多かったので、入れることがあるかも。
  • --skip-test
    railsではデータベース同様にテストもデフォルトのものが用意されており、Minitestというテストが生成される。自分はRSpecを使うことが多いので、生成しなくても良い時には記述した方が良い。
  • -Bもしくは--skip-bundle
    上で少し触れた通り、rails newの際にbundle installを行わないようにする。
    これについてはRails tutorialにも書いてあり、実際に% rails newコマンドを打った時にrun bundle installと出てくることから実行されることが分かると書かれている。
  • --skip-coffee coffeescriptを使うことがほぼないのでこれも入れてもいいのかも?

プロジェクトのバージョン指定

バージョンによってはそれまで使えたものがなくなっていたり、名前が変わっていたりしてエラーになることがあるので、指定しておいたほうが無難...だと思う。
バージョン指定をしない場合にはPCに入っているrailsバージョン(% rails -vで確認可能)の最新のバージョンで生成される。
但し、上述のオプション-Bor--skip-bundleの記述がない場合は、% rails new _5.2.3_をのように指定していても、プロジェクト生成後にbundle installが行われるため、PCの中にインストールされている最新バージョンが入ってしまうので注意する。
この場合は% rails new -Bでプロジェクトディレクトリ生成後
Gemfileのgem 'rails', '~>5.2.3''= 5.2.3'に書き換えてから% bundle installする
'~> 5.2.3'のままの場合は5.2.3以上をインストールしてしまう。

% rails _5.2.3_ new myapp -B -d mysql --skip-turbolinks --skip-coffee

グローバルにgemが既に入りまくってしまっている自分はこんな感じのコマンドでプロジェクト作るのかな...って感じ。
ただ、--skip-coffeeはなくても-Bbundle install止めてる時点でGemfileのgem 'coffee-rails'をコメントアウトしてから手動bundle installでも結果は同じのような。


参考にさせていただいた記事
Rails tutorial 1.3 最初のアプリケーション
Railsドキュメント オプションについて一通り説明あり。

新規Railsプロジェクトの作成手順まとめ
rails newするときによく使うオプションと、rails newした後によく行う設定
新規Railsプロジェクト作成時のコマンド


問題なく行われてしまっている自動生成コマンド一つ一つ、何が起きているかくらいは確認した方がいいですね❗️
正直、公式ドキュメントは単体だと取っつきづらいけど、どのように使っているか少し調べてから見てみるとそもそもの書き方などや説明が詳細に載っているので色々と知ることが出来ます。

したらな❗️ 👋