プロジェクト名を「agribeit」から「agribeit_v1」に変更します。
ローカル側
(1)Gemfileに以下の行を追加します。
gem 'rename'
(2)追加したらbundler install
を実行します。
agribeit $ bundler install
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using rake 13.0.6
Using minitest 5.18.0
Using erubi 1.12.0
Using racc 1.6.2
Using nio4r 2.5.8
Using mini_mime 1.1.2
Using date 3.3.3
Using concurrent-ruby 1.2.2
Using rack 2.2.6.4
Using bindex 0.8.1
Using msgpack 1.6.1
Using builder 3.2.4
Using crass 1.0.6
Using diff-lcs 1.5.0
Using ast 2.4.2
Using method_source 1.0.0
Using websocket-extensions 0.1.5
Using parallel 1.22.1
Using io-console 0.6.0
Using zeitwerk 2.6.7
Using json 2.6.3
Using marcel 1.0.2
Using rainbow 3.1.1
Using rexml 3.2.5
Using regexp_parser 2.7.0
Using ruby-progressbar 1.13.0
Using nokogiri 1.14.2 (x86_64-darwin)
Using puma 5.6.5
Using tzinfo 2.0.6
Using bundler 2.3.26
Using rack-test 2.1.0
Using sprockets 4.2.0
Using timeout 0.3.2
Using parser 3.2.1.1
Using reline 0.3.2
Using i18n 1.12.0
Using thor 1.2.1
Using net-protocol 0.2.1
Using rubocop-ast 1.28.0
Using irb 1.6.3
Using websocket-driver 0.7.5
Using activesupport 7.0.4.3
Using rspec-support 3.12.0
Using mysql2 0.5.5
Using debug 1.7.1
Using net-imap 0.3.4
Using globalid 1.1.0
Using unicode-display_width 2.4.2
Using bootsnap 1.16.0
Using net-smtp 0.3.3
Using activejob 7.0.4.3
Using loofah 2.19.1
Using net-pop 0.1.2
Using rails-html-sanitizer 1.5.0
Using mail 2.8.1
Using rspec-expectations 3.12.2
Using activemodel 7.0.4.3
Using rubocop 1.48.1
Using rails-dom-testing 2.0.3
Using activerecord 7.0.4.3
Using rspec-mocks 3.12.4
Using rspec-core 3.12.1
Using rubocop-rails 2.18.0
Using actionview 7.0.4.3
Using actionpack 7.0.4.3
Using jbuilder 2.11.5
Using railties 7.0.4.3
Using actioncable 7.0.4.3
Using rspec-rails 6.0.1
Using actionmailer 7.0.4.3
Using sprockets-rails 3.4.2
Using activestorage 7.0.4.3
Using web-console 4.2.0
Using actionmailbox 7.0.4.3
Using actiontext 7.0.4.3
Using rails 7.0.4.3
Fetching rename 1.0.8
Installing rename 1.0.8
Bundle complete! 13 Gemfile dependencies, 77 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
(3)データベースを削除します。
agribeit $ rails db:drop
Dropped database 'agribeit_development'
Dropped database 'agribeit_test'
MySQL側でコマンドを打って以下のようになっていれば削除できています。
mysql> select * from jobs;
ERROR 1049 (42000): Unknown database 'agribeit_development'
mysql>
(4)rails g rename:into 新しいアプリ名
でアプリ名を変更します。
agribeit $ rails g rename:into agribeit_v1
Search and replace module in files...
gsub Gemfile
gsub Gemfile.lock
gsub README.md
gsub Rakefile
gsub config.ru
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/content_security_policy.rb
gsub config/initializers/filter_parameter_logging.rb
gsub config/initializers/inflections.rb
gsub config/initializers/permissions_policy.rb
gsub config/puma.rb
gsub config/routes.rb
gsub config/database.yml
gsub config/cable.yml
gsub config/environments/production.rb
gsub app/views/layouts/application.html.erb
Search and replace module in environment variables...
gsub config/database.yml
Renaming references...
Renaming directory...Done!
New application path is '/Users/me/environment/agribeit_v1'
agribeit $
(5)データベースの作成
参考記事ではrails db:create
とrails db:migrate
を行っていますが、このプロジェクトはもう使わないので行いません。
(6)残りの部分を修正
grep -rn 古いアプリ名 . --exclude-dir={.git,tmp,log}
でgem 'rename'だけでは修正できていない、旧アプリ名の部分を検索して手動で削除します。
agribeit $ grep -rn agribeit . --exclude-dir={.git,tmp,log}
./config/cable.yml:10: channel_prefix: agribeit_v1_production
./config/environments/production.rb:63: # config.active_job.queue_name_prefix = "agribeit_v1_production"
./config/database.yml:22: database: agribeit_v1_development
./config/database.yml:29: database: agribeit_v1_test
./config/database.yml:53: database: agribeit_v1_production
./config/database.yml:54: username: agribeit_v1
agribeit $
すべて新しいプロジェクト名に置き換わっているようなのでこれでOKです。
リモート側
GitHubにアクセスし、Settings
からRepository name
をagribeit_v1
に変更します。
これで、完成です。
後の操作(git add → git commit → git push)などは、通常通り行うことができます。
これを確かめるために、まずはGitで変更されたファイルを見てみます。
agribeit $ git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: app/views/layouts/application.html.erb
modified: config/application.rb
modified: config/cable.yml
modified: config/environments/production.rb
no changes added to commit (use "git add" and/or "git commit -a")
agribeit $
たとえば一番上のファイルをdiffしてみると、
agribeit $ git diff app/views/layouts/application.html.erb
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 5a9200e..af134fb 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
- <title>Agribeit</title>
+ <title>AgribeitV1</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
きちんと新しいプロジェクト名で置き換わっていることがわかります。他3つのファイルも同じようでした。これらすべてaddしてcommit、pushします。
agribeit $ git add -A
agribeit $ git commit -m "feat:プロジェクト名変更"
[develop e2214af] feat:プロジェクト名変更
4 files changed, 4 insertions(+), 4 deletions(-)
agribeit $ git push -u origin develop
Enumerating objects: 27, done.
Counting objects: 100% (27/27), done.
Delta compression using up to 8 threads
Compressing objects: 100% (14/14), done.
Writing objects: 100% (15/15), 1.35 KiB | 1.35 MiB/s, done.
Total 15 (delta 11), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (11/11), completed with 10 local objects.
remote: This repository moved. Please use the new location:
remote: https://github.com/yokoyamamn/agribeit_v1.git
remote:
remote: Create a pull request for 'develop' on GitHub by visiting:
remote: https://github.com/yokoyamamn/agribeit_v1/pull/new/develop
remote:
To https://github.com/yokoyamamn/agribeit.git
* [new branch] develop -> develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.