重命名Ruby on Rails应用程序

时间:2010-07-17 05:25:02

标签: ruby-on-rails

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

6 个答案:

答案 0 :(得分:27)

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

答案 1 :(得分:23)

文件中必须重命名应用程序的位置数(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来做这件事并且工作。

应该这样做。

答案 2 :(得分:9)

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

答案 3 :(得分:8)

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 ::应用。所有其他文件都将引用Myapp::Application

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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

我已经编写了以下脚本来做到这一点。您也可以在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上创建了一个howto视频。 http://youtu.be/dDw2RmczcDA