Posted at

[Rails]rails newした後からアプリ名を変更する方法

More than 1 year has passed since last update.


概要

Railsでrails newしてアプリを作成したあとに、アプリの名前を変更したくなることはよくあると思います。そこで、その方法を手順としてみました。

ここでは、renameというgemを使用して進めていきます。過去の他記事ではこのgemの仕様が少し古いものを前提にしていたり、gemの使い方を含め手順を順番に記載しているものは見当たらなかったので、今回記事にしてみました。


環境

Rails4

未検証ですが、おそらくRails5でもだいたい同じかと思います。


手順


1. renameのgemを入れる


Gemfile

gem 'rename'


$ bundle


2. 旧名のDBを破棄しておく

アプリ名を変更する前にDBの破棄をしておいた方が楽です。もし、旧名のDBを残しておきたいなら、この作業は不要です。消したくなったときには、RDBMSのコマンドを叩いて消してください。

$ rake db:drop


3. renameを使用してアプリ名を変更する。

1で入れたgemを使用してアプリケーションの名前を変えていきます。

$ rails g rename:into New-Name

Search and replace module in...
gsub config.ru
gsub Gemfile
gsub Gemfile.lock
gsub Rakefile
gsub README.rdoc
gsub config/application.rb
gsub config/boot.rb
gsub config/environment.rb
gsub config/environments/development.rb
gsub config/environments/production.rb
gsub config/environments/test.rb
gsub config/initializers/assets.rb
gsub config/initializers/backtrace_silencers.rb
gsub config/initializers/config.rb
gsub config/initializers/cookies_serializer.rb
gsub config/initializers/filter_parameter_logging.rb
gsub config/initializers/inflections.rb
gsub config/initializers/mime_types.rb
gsub config/initializers/omniauth.rb
gsub config/initializers/session_store.rb
gsub config/initializers/wrap_parameters.rb
gsub config/routes.rb
gsub config/schedule.rb
gsub config/initializers/session_store.rb
gsub config/database.yml
Renaming references...
Renaming directory...Done!
New application path is 'PATH_To/NEW_APP'


4. 新しいアプリ名のフォルダに移動する。

$ cd ../New-Name


5. 新しいDBを作成する。

$ rake db:create


6. 新しいDBでテーブルをマイグレーションする

$ rake db:migrate


7. (あれば)その他の古いファイル名になっている場所を修正する

アプリの名称は、ファイル名やHTML内など様々な場所で使用されることがあると思います。database周りやconfigなどのRailsの仕組みとしてアプリ名称が入ると決まっている場所はgemが一括で修正してくれますが、さすがに個別にアプリ名称を使用した場所までは修正できません。ですので、それらは探して修正していくしかありません。

下記のコマンドのようにgrepして古いアプリ名称が含まれた箇所を探すと良いと思います。

$ grep -rn APP_NAME . --exclude-dir={.git,tmp,log}


8. 稼働確認

最後に、正しく動くか確認してみましょう。

$ rails s