2009-02-02 221 views
1

我已经继承了一个有问题的Ruby on Rails应用程序。我在Rails上阅读了一些书的一半,但还没有看到一些问题的答案。Ruby on Rails新手

  1. 什么是备份应用程序的最佳方法?我可以只是tar -cvzf app.tgz app?我还不知道应用程序是否有sqlite3数据库或连接到数据库服务器。

  2. 将应用程序移动到另一台服务器进行测试的最佳方式是什么?再次,我不知道它是否是sqlite3或支持它的数据库服务器。

感谢,

迈克尔

更新:是的,我将使用版本控制。现在没有任何权利。我想我想知道的问题是:app目录的可移植性如何;如果我想将整个应用程序移动到另一台计算机上,我是否需要随身携带其他任何东西?

回答

2

我会看看Capistrano - 这是选择的部署/管理工具。

它的核心是从源代码控制中获取应用程序,部署和配置目标服务器,并运行任何数据库迁移。

您可以使用它指向多个服务器(如测试,分段和生产)。

要回答您的实际问题,您可以通过简单地复制Rails目录(注意:不是只是应用程序目录,但也是父目录)来移动您的应用程序。你的数据库需要单独管理 - 对于sqlite,你可以抓住这些文件,如果你正在使用MySQL,你可能会转储数据库并在下一台服务器上重新配置。

0

对于这两个,我会建议一个版本管理系统。 也许Subversion

这就是我所做的,出于类似的原因。

如果您查看config/database.yml中的数据库设置,您会发现正在使用的任何数据库。如果是sqlite,只要确保它是Subversion存储库的一部分。

除此之外,当您在另一台服务器上执行导出或检出时,只要确保服务器可以访问数据库,无论它在哪里。

+0

更具体地说“数据库设置”的位置。他是一个新手。 – 2009-02-02 20:39:57

0

版本控制应该是一个好的开始。你应该立刻知道什么是后备数据库,并确保你不仅有1个数据库文件/服务器,但有第二个测试实例。不要乱用生产数据。

0

要“备份”应用程序的代码,您可以使用git与http://github.com。这给你一个场外区域,你可以把你的代码,但我认为你必须支付私人存储库(约12美元/月)。或者,只需在办公室的另一个盒子上设置一个git服务器并将其托管在那里。

“数据库设置”保存在config/database.yml文件中,它会告诉你需要了解数据库的信息。

3

我还不知道应用程序是否有sqlite3数据库或连接到数据库服务器。

查看config目录下的database.yml文件。适配器线会告诉你它使用的是哪个数据库。

0

GIT(或SVN)+ Capistrano的代码,数据也有选择:

  • 有倾倒你的应用程序数据库和资产数Rails插件。我最喜欢的是github.com/toy/dump。您可以运行rake dump:createrake dump:restore。最令人兴奋的是capistrano集成 - cap dump:mirror:down下载应用程序资产和数据库,它在本地机器上创建您的网站克隆。

  • 如果您需要自动备份您的应用程序以保证睡眠良好,我会建议您使用Backup My App服务。这是用于Rails应用程序自动备份的完整解决方案,您只需安装他们的插件,并自动处理剩余的过程。他们将备份历史记录保留数周,您可以通过浏览器浏览它们并自动恢复其中的任何一个。

3

一个很好的方法来备份代码我发现是使用Git并推送到上存储的Dropbox的纯仓库(http://getdropbox.com

的工作流程是这样的(假设基于Unix的系统像OSX,如果Windows,相应地调整路径)

创建本地应用程序,让从它混帐回购协议:

cd ~/Rails 
rails my_app 
cd my_app 
git init 
git add . 
git commit -m "first commit" 

然后在你的Dropbox目录,请纯仓库(我用了下它叫做“混帐”目录)

cd ~/Dropbox/git 
mkdir my_app.git 
cd my_app.git 
git init --bare 

现在回到你的应用程序,并添加Dropbox的为起点,推动它

cd ~/Rails/my_app 
git remote add origin ~/Dropbox/git/my_app.git 
git push origin master 

后您在变化您的〜/ Rails目录,只需推入Dropbox回购站,它将备份到他们的服务器上(并且您可以轻松地在所有已连接到Dropbox的计算机上共享回购)

1

您可以复制整个目录。然而,通常的做法是先将你的Rails安装和你的宝石“冻结”到目录中(如果尚未完成)。这可以确保您复制应用程序的测试服务器拥有并使用完全相同的Rails版本和安装的任何gem。

如果这样做了,你应该有一个vendor/rails /目录。

您可以通过运行“冻结”你的Rails:

rake rails:freeze:gems 

你还需要确保Ruby是相同或两台主机上的一个类似的版本。我在1.8.7和1.9.1上遇到了麻烦 - 记住它。