对于RoR安装,有什么方法可以在没有root访问权限的情况下运行rake
命令?运行耙子没有外壳访问?
换句话说,有什么办法可以让db:create
和db:migrate
在没有root权限的情况下运行(可能是自动或其他)?或者我可以从RoR controller
运行rake
命令吗?
对于RoR安装,有什么方法可以在没有root访问权限的情况下运行rake
命令?运行耙子没有外壳访问?
换句话说,有什么办法可以让db:create
和db:migrate
在没有root权限的情况下运行(可能是自动或其他)?或者我可以从RoR controller
运行rake
命令吗?
看看rails-2.X.X/lib/tasks/databases.rake
,你可以看到创建,删除和迁移数据库的代码。
一旦rails
环境被初始化,您可以使用rake任务文件中的代码来创建,删除和迁移。
我不知道在出现错误之前,您是否可以在控制器级别执行此操作,但您可以随时尝试。您也可以在rails
完成环境文件初始化后执行此操作。
config/environment.rb
...
ActiveRecord::Migration.verbose = false
ActiveRecord::Migrator.migrate(File.join(Rails.root, 'db', 'migrate'))
好吧,这是一个鸡鸡蛋问题,你可以在没有创建数据库的情况下启动你的RoR实例,但我怀疑它。如果您的托管服务提供商能够托管RoR应用程序,则必须有方法让他们为您运行rake
或让您以某种方式运行它。
既然它听起来像你遇到了创建数据库的麻烦,有没有办法从主机控制面板来做到这一点?不过,你将如何迁移你的数据库?听起来你可能需要看一个新的主机。我使用Slicehost,并认为他们是伟大的:)
谢谢斯科特。创建数据库没有问题,也没有使用MySql转储脚本等进行迁移,但我宁愿不要打扰... – 2009-01-26 01:05:40
给这个代码试试:
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'
Rake::Task["db:version"].invoke
我只是试图在./script/console
和工作。如果没有require
行,它将无法正常工作。
我使用它从rake任务调用其他rake任务(当它不是预请求时,而是必须在中间发生时)。
请注意,这将不会得到任何命令的输出。如果你想,你可以只去好老反引号和运行这样的命令:
output = `rake db:version`
那将启动另一个过程,但我不认为有问题这一点。
要说清楚的是,您不需要root访问权限,只需要shell(ssh)对该机器的访问权限即可。
如何在没有访问权的情况下部署它?如果您使用的是capistrano,而您已经拥有shell访问权限,并且可以为您运行这些任务。
我会检查一下。我认为RoR实例可能在没有创建数据库的情况下启动,事实上...只要我不呼叫需要它的控制器... – 2009-01-26 00:17:19
不,没有问题,您可以在没有创建数据库的情况下启动RoRT正在运行... – 2009-01-26 03:18:37