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

概要

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
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.