如何更改Ruby on Rails应用程序名称?

我有一个Ruby on Rails应用程序,它是使用以下命令创build的:

rails new old_name -d mysql 

现在我想将应用程序名称更改为new_name

只是更改应用程序文件夹名称是不够的,因为数据库名称也必须更改(从old_name_developmentnew_name_development )。 我想知道在自动生成的文件中是否还有其他地方需要改变。

有没有内置的命令来更改应用程序名称?

有一个Rails插件为你做。 超级方便。

https://github.com/get/rename

在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