Posted at

`rails new`した時にProcfileを作成する

More than 3 years have passed since last update.

作成したばかりのRailsアプリケーションをherokuにpushすると

###### WARNING:

remote: No Procfile detected, using the default web server (webrick)
remote: https://devcenter.heroku.com/articles/ruby-default-web-server

と出ていてProcfileがないと警告がでてしまう。

なんとなく警告が出ていると嫌だし、毎回作成するのも面倒なのでrails newした時にProcfileを自動生成することにした。

これはRails Application Templateを利用すると目的が達成できます。

まずは~/.rails_app_template.rb を作成する。ファイル名は本当はなんでも良い。中身は以下のようにする。

create_file 'Procfile', 'web: bundle exec rails server -p $PORT'

あとはプロジェクトを作成する際には以下のコマンドを実行する。

rails new -m ~/.rails_app_template.rb プロジェクト名

-mを指定するのがめんどくさい場合は~/.railsrcファイルを記述しておくとよい。こちらのファイル名は.railsrcにしないといけない。


~/.railsrc

rails new -m ~/.rails_app_template.rb プロジェクト名


この.railsrcを無効にしたい場合は

rails new --no-rc プロジェクト名

とすればよい。


もっと詳しく

より詳細は下記の記事を参考にすると良いです。

Application TemplateやGeneratorでファイルを作るにはThor::Actions#create_fileメソッドが利用できます。

https://github.com/erikhuda/thor/blob/v0.19.1/lib/thor/actions/create_file.rb#L5-L27

Thorはコマンドラインツールを作成支援ライブラリで、Rails GeneratorやRails ApplicationはThorを拡張して作成されています。

create_fileのような命令の一覧は下記に記載されています。


参考文献