重命名Ruby on Rails应用程序

有没有办法在Rails 2中重命名应用程序?

您可以使用https://github.com/morshedalam/rename重命名Rails 3应用程序

文件中必须重命名应用程序的位置数(Rails 3.1),否则您将无法启动服务器。 所以做以下事情:

1)重命名目录

2)在Application.rb文件中重命名module (yourapp)

3)在以下文件中重命名(yourapp)::Application

的environment.rb

的routes.rb

config.ru

Rake文件

初始化/ secret_token.rb

初始化/ session_store.rb

environments / test.rb,production.rb和development.rb

4)您还可以将config.database.yml.sqlite3中的数据库重命名为(yourapp)_development,(yourapp)_test等。在这种情况下可能需要重新加载数据库。 我使用yaml_db gem和rake db:reload来做这个并且工作。

应该这样做。

我在重命名Rails 3应用程序时遇到了一些麻烦。 然后我找到了这个插件 ,它就像一个魅力。

Rails 2实际上没有应用程序“名称”的概念。 唯一标识您的应用程序的是文件夹本身的名称。

在Rails 3中,它有点不同。 Rails 3项目与config/application.rb定义的模块间隔开。 此应用程序模块用于存放您的应用程序,您将看到它由config.ruconfig/routes.rbconfig/environment.rb以及config/environments/定义的所有环境引用。

如果你要打开一个终端会话并运行命令rails new myapp ,你的config/application.rb文件将定义模块Myapp ,其中将定义一个Application类,它扩展了Rails :: Application。 所有其他文件将引用Myapp::Application

在Rails 2和3中,您将找到在config/initializers/session_store.rb定义的会话的字符串键,它采用默认值“_ _session”。 它并不真正与应用程序的“名称”绑定,但您应该尝试保持同步,以防止任何意外的会话密钥名称与其他应用程序冲突。

只需重命名应用程序目录,仅此而已。 我做了几次,没有问题。

我写了以下脚本来做到这一点。 你也可以在https://gist.github.com/danielpclark/8dfcdd7ac63149323bbc看到它

 #!/usr/bin/ruby # Rename Rails Project (File: rename_rails) # Copyright 6ft Dan(TM) / MIT License # Check the config/application.rb for capital usage in project name by model OldProjectName # Usage: rename_rails OldProjectName NewAwesomeName # Replace string instances of project name `grep -lR #{ARGV[0]} | xargs sed -i 's/#{ARGV[0]}/#{ARGV[1]}/g'` `grep -lR #{ARGV[0].downcase} | xargs sed -i 's/#{ARGV[0].downcase}/#{ARGV[1].downcase}/g'` # Rename Rails directory if it exists if File.directory?(ARGV[0]) `mv #{ARGV[0]} #{ARGV[1]}` drc = ARGV[1] elsif File.directory?(ARGV[0].downcase) `mv #{ARGV[0].downcase} #{ARGV[1]}` drc = ARGV[1] end # Delete temporary files (helps prevent errors) drc ||= '' if ['cache','pids','sessions','sockets'].all? { |direc| File.directory?(File.join(drc,'tmp', direc)) } FileUtils.rm_rf(File.join(drc,'tmp')) end 

我在YouTube上创建了一个howtovideo。 http://youtu.be/dDw2RmczcDA