有没有办法在Rails 2中重命名应用程序?
答案 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.ru
,config/routes.rb
,config/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