rename-rails 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 631d72108be39543d3d3f40400e9d306d92c04f96d77a80a8664a9ad87f528a7
4
+ data.tar.gz: fc3dd19e44e55e47d37e3a3f9f291167af6f02da2d0b05a48c8294e748164d9d
5
+ SHA512:
6
+ metadata.gz: b8e7406078cd5073f70111cbc4e30b2217021d9da5ff54a380551924fd9b579ba917687722207e92ac00d1ed92cee070db0771b25719385148d28d280e875038
7
+ data.tar.gz: 0ceb8bec89186fc0a2dfcd0377a771187866de558834745ee2c7e3174f5457f06e66d6ffcd478697e79c4a4254bd1b8af8ad8b0302a3d090a8c267ef2cc3adab
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea
data/.rubocop.yml ADDED
@@ -0,0 +1,21 @@
1
+ AllCops:
2
+ TargetRubyVersion: 3.0
3
+ NewCops: enable
4
+
5
+ Metrics/AbcSize:
6
+ Enabled: false
7
+
8
+ Metrics/MethodLength:
9
+ Enabled: false
10
+
11
+ Style/Documentation:
12
+ Enabled: false
13
+
14
+ Style/StringLiterals:
15
+ EnforcedStyle: double_quotes
16
+
17
+ Style/IfUnlessModifier:
18
+ Enabled: false
19
+
20
+ Style/GuardClause:
21
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.0.1
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in rename.gemspec
6
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ rename-rails
2
+ ============
3
+
4
+ This gem allows you to rename your Rails application by using a single command.
5
+
6
+ Fork of [rename][rename] by [@morshedalam][], with updates for Rails 6 provided by [@rlogwood][].
7
+
8
+ [rename]: https://github.com/morshedalam/rename
9
+ [@morshedalam]: https://github.com/morshedalam
10
+ [@rlogwood]: https://github.com/rlogwood
11
+
12
+
13
+ Installation
14
+ ------------
15
+
16
+ Add the following to your Rails app's `Gemfile` and `bundle install`:
17
+
18
+ ```ruby
19
+ gem "rename"
20
+ ```
21
+
22
+ Usage
23
+ -----
24
+
25
+ ```sh
26
+ $ rails generate rename:into NewAppName
27
+ ```
28
+
29
+ Contributing
30
+ ------------
31
+
32
+ 1. Fork it
33
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
34
+ 3. Commit your changes (`git commit -am "Added some feature'`)
35
+ 4. Push to the branch (`git push origin my-new-feature`)
36
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env rake
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/gem_tasks"
@@ -0,0 +1 @@
1
+ rails generate rename:app_to NewAppName
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("../shared/common_methods", File.dirname(__FILE__))
4
+
5
+ module RenameRails
6
+ module Generators
7
+ class AppToGenerator < Rails::Generators::Base
8
+ include CommonMethods
9
+
10
+ def app_to
11
+ warn "[DEPRECATION] `app_to` is deprecated. Please use `into` instead."
12
+ perform
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1 @@
1
+ rails g rename:into NewName
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("../shared/common_methods", File.dirname(__FILE__))
4
+
5
+ module RenameRails
6
+ module Generators
7
+ class IntoGenerator < Rails::Generators::Base
8
+ include CommonMethods
9
+
10
+ def into
11
+ perform
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,142 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+
5
+ module CommonMethods
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ desc "Rename your Rails application"
10
+
11
+ argument :new_name, type: :string, default: ""
12
+ end
13
+
14
+ protected
15
+
16
+ def perform
17
+ prepare_app_vars
18
+ validate_name_and_path?
19
+ apply_new_module_name
20
+ change_app_directory
21
+ end
22
+
23
+ def app_parent
24
+ if Rails::VERSION::MAJOR >= 6
25
+ Rails.application.class.module_parent.name
26
+ else
27
+ Rails.application.class.parent.name
28
+ end
29
+ end
30
+
31
+ def prepare_app_vars
32
+ @new_key = new_name.gsub(/\W/, "_")
33
+ @old_module_name = app_parent
34
+ @new_module_name = @new_key.squeeze("_").camelize
35
+ @new_dir = new_name.gsub(%r{[&%*@()!{}\[\]'\\/"]+}, "")
36
+ @new_path = Rails.root.to_s.split("/")[0...-1].push(@new_dir).join("/")
37
+ end
38
+
39
+ def validate_name_and_path?
40
+ if new_name.blank?
41
+ raise Thor::Error, "[Error] Application name can't be blank."
42
+ elsif /^\d/.match?(new_name)
43
+ raise Thor::Error, "[Error] Please give a name which does not start with numbers."
44
+ elsif @new_module_name.empty?
45
+ raise Thor::Error, "[Error] Please enter at least one alphabet."
46
+ elsif reserved_names.include?(@new_module_name.downcase)
47
+ raise Thor::Error, "[Error] Please give a name which does not match any of the reserved Rails keywords."
48
+ elsif Object.const_defined?(@new_module_name)
49
+ raise Thor::Error, "[Error] Constant #{@new_module_name} is already in use, please choose another name."
50
+ elsif File.exist?(@new_path)
51
+ raise Thor::Error, "[Error] Already in use, please choose another name."
52
+ end
53
+ end
54
+
55
+ # rename_app_to_new_app_module
56
+ def apply_new_module_name
57
+ in_root do
58
+ puts "Search and replace module in..."
59
+
60
+ # Search and replace module in to file
61
+ Dir["*", "config/**/**/*.rb", ".{rvmrc}"].each do |file|
62
+ # file = File.join(Dir.pwd, file)
63
+ replace_into_file(file, /(#{@old_module_name}*)/m, @new_module_name)
64
+ end
65
+
66
+ # Rename session key
67
+ replace_into_file("config/initializers/session_store.rb", /(('|")_.*_session('|"))/i, "'_#{@new_key}_session'")
68
+ # Rename database
69
+ replace_into_file("config/database.yml", /#{@old_module_name.underscore}/i, @new_name.underscore)
70
+
71
+ # Update package.json name entry
72
+ old_package_name_regex = /\Wname\W *: *\W(?<name>[-_\p{Alnum}]+)\W *, */i
73
+ new_package_name = %("name":"#{@new_module_name.underscore}",)
74
+ replace_into_file("package.json", old_package_name_regex, new_package_name)
75
+
76
+ # Update app/views/layouts/application.html.erb title
77
+ replace_into_file("app/views/layouts/application.html.erb", "<title>#{@old_module_name}</title>",
78
+ "<title>#{@new_module_name}</title>")
79
+
80
+ # Update channel prefix config/cable.yml
81
+ replace_into_file("config/cable.yml", "#{@old_module_name.underscore}_production",
82
+ "#{@new_module_name.underscore}_production")
83
+
84
+ # Update config/environments/production.rb # config.active_job.queue_name_prefix = "(myapp)_production"
85
+ replace_into_file("config/environments/production.rb", "#{@old_module_name.underscore}_production",
86
+ "#{@new_module_name.underscore}_production")
87
+
88
+ # config/database.yml capitalize environment variable
89
+ replace_into_file("config/database.yml", "ENV['#{@new_module_name.underscore}_DATABASE_PASSWORD']",
90
+ "ENV['#{@new_module_name.underscore.upcase}_DATABASE_PASSWORD']")
91
+ end
92
+ end
93
+
94
+ # rename_app_to_new_app_directory
95
+ def change_app_directory
96
+ rename_references
97
+ rename_directory
98
+ end
99
+
100
+ private
101
+
102
+ def reserved_names
103
+ @reserved_names = %w[application destroy benchmarker profiler plugin runner test]
104
+ end
105
+
106
+ def rename_references
107
+ puts "Renaming references..."
108
+ old_basename = File.basename(Dir.getwd)
109
+
110
+ in_root do
111
+ Dir.glob(".idea/*", File::FNM_DOTMATCH).each do |file|
112
+ replace_into_file(file, old_basename, @new_dir)
113
+ end
114
+
115
+ gem_set_file = ".ruby-gemset"
116
+ replace_into_file(gem_set_file, old_basename, @new_dir) if File.exist?(gem_set_file)
117
+ end
118
+ end
119
+
120
+ def rename_directory
121
+ print "Renaming directory..."
122
+
123
+ begin
124
+ # FileUtils.mv Dir.pwd, app_path
125
+ File.rename(Rails.root.to_s, @new_path)
126
+ puts "Done!"
127
+ puts "New application path is '#{@new_path}'"
128
+ rescue StandardError => e
129
+ puts "Error:#{e.inspect}"
130
+ end
131
+ end
132
+
133
+ def replace_into_file(file, search_exp, replace)
134
+ return if File.directory?(file)
135
+
136
+ begin
137
+ gsub_file file, search_exp, replace
138
+ rescue StandardError => e
139
+ puts "Error: #{e.message}"
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RenameRails
4
+ autoload :VERSION, "active_admin/version"
5
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RenameRails
4
+ VERSION = "1.0.0"
5
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("lib/rename_rails/version", __dir__)
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "rename-rails"
7
+ gem.version = RenameRails::VERSION
8
+ gem.licenses = ["MIT"]
9
+ gem.summary = "Rename your Rails application using a single command."
10
+ gem.authors = ["Morshed Alam", "Richard Logwood", "Jake Romer"]
11
+ gem.email = "jake@jmromer.org"
12
+ gem.files = `git ls-files`.split("\n")
13
+ gem.homepage = "https://github.com/jmromer/rename-rails"
14
+ gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
15
+ gem.require_paths = %w[lib]
16
+
17
+ gem.required_ruby_version = "~> 3.0"
18
+ gem.add_dependency "rails", "~> 6.1"
19
+ gem.add_dependency "thor", "~> 1.1"
20
+ gem.add_runtime_dependency "activesupport", "~> 6.1"
21
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rename-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Morshed Alam
8
+ - Richard Logwood
9
+ - Jake Romer
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2021-06-09 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rails
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '6.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '6.1'
29
+ - !ruby/object:Gem::Dependency
30
+ name: thor
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '1.1'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.1'
43
+ - !ruby/object:Gem::Dependency
44
+ name: activesupport
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '6.1'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '6.1'
57
+ description:
58
+ email: jake@jmromer.org
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - ".gitignore"
64
+ - ".rubocop.yml"
65
+ - ".ruby-version"
66
+ - Gemfile
67
+ - LICENSE
68
+ - README.md
69
+ - Rakefile
70
+ - lib/generators/rename_rails/app_to/USAGE
71
+ - lib/generators/rename_rails/app_to/app_to_generator.rb
72
+ - lib/generators/rename_rails/into/USAGE
73
+ - lib/generators/rename_rails/into/into_generator.rb
74
+ - lib/generators/rename_rails/shared/common_methods.rb
75
+ - lib/rename_rails.rb
76
+ - lib/rename_rails/version.rb
77
+ - rename_rails.gemspec
78
+ homepage: https://github.com/jmromer/rename-rails
79
+ licenses:
80
+ - MIT
81
+ metadata: {}
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '3.0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubygems_version: 3.2.15
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: Rename your Rails application using a single command.
101
+ test_files: []