如何更改Ruby on Rails应用程序名称?
我有一个Ruby on Rails应用程序,它是使用以下命令创build的:
rails new old_name -d mysql
现在我想将应用程序名称更改为new_name
。
只是更改应用程序文件夹名称是不够的,因为数据库名称也必须更改(从old_name_development
到new_name_development
)。 我想知道在自动生成的文件中是否还有其他地方需要改变。
有没有内置的命令来更改应用程序名称?
有一个Rails插件为你做。 超级方便。
在Rails 3中,在以下文件中引用了应用程序名称:
- configuration/ application.rb中
- 到config / environment.rb
- configuration/环境/ development.rb
- configuration/环境/ production.rb
- configuration/环境/ test.rb
- configuration/初始化/ secret_token.rb
- configuration/初始化/ session_store.rb
- config / mongoid.yml(如果使用Mongoid)
- configuration/ routes.rb中
- config.ru
- Rake文件
- 标题标签中的app / views / layouts / application.html.erb
在Rails 3中,应用程序类在config / application.rb中定义,并在您的环境文件(config / environment.rb,config / environments / *。rb)和config / routes.rb中引用。 我想就是这样,但是如果你错过了一个,你应该从Rails服务器上很快find。 🙂
- configuration/ application.rb中
- configuration/ enviroment.rb
- configuration/环境/ *。RB
- configuration/ routes.rb中
这就是说,除非你有一个非常具体的理由要改变,否则我不会打扰。 不以任何其他方式真正影响应用程序。
Rails 3应用程序可以使用https://github.com/morshedalam/rename重命名;
运行以下命令以从Rails(3.0.7)项目的根目录中replaceold_name for new_name。
replace old_name new_name -- ./config/environment.rb ./config/application.rb ./Rakefile ./config/initializers/secret_token.rb ./config/environments/production.rb ./config/environments/development.rb ./app/views/layouts/application.html.erb ./config/routes.rb config.ru ./config/environments/test.rb ./config/initializers/session_store.rb
但一定要运行
fgrep old_name . -iR
或者类似的第一个检查是否没有发生old_name在你的项目中不应该被取代。
编辑:
当然,你需要安装replace命令。
考虑到你的appname是CamelCased,所以也许你必须尝试一些不同的变体,比如OldName和NewName。
您可能会发现自己必须在需要时重命名应用程序,或者必须生成与应用程序名称相同名称的模型或脚手架。 刚刚发生在我身上。 在Rails 3.2.13上使用https://github.com/morshedalam/rename ,到目前为止没有问题。
为此,我使用了很好的旧shell命令:
grep -r old_name * | cut -d: -f1 | xargs sed -i .bak 's/old_name/new_name/g'
这个命令在所有findold_name的文件中用old_namereplaceold_name。 但是,它会创build一个扩展名为“.bak”的备份文件。 这些文件可以很容易地删除,一旦你检查一切顺利。
这样做的好处是,它不是“rails版本依赖”。
在路轨上4
加
gem 'rename'
到Gemfile然后做
bundle install
捆绑安装后
rails g rename:app_to name_of_app