Запуск граблей без доступа к оболочке? - PullRequest
1 голос
/ 26 января 2009

Для установки RoR, есть ли способ запустить команды rake без рут-доступа?

Другими словами, есть ли способ заставить db:create и db:migrate работать без root-доступа (возможно, автоматически или что-то в этом роде)? Или я могу запустить rake команды из RoR controller?

Ответы [ 5 ]

4 голосов
/ 26 января 2009

Посмотрите на 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'))
0 голосов
/ 27 января 2009

Просто чтобы прояснить, вам не нужен root-доступ, вам нужен только shell (ssh) доступ к этой машине.

Как вы развертываете его без доступа? Если вы используете capistrano, у вас уже есть доступ к оболочке, и он может выполнять эти задачи за вас.

0 голосов
/ 26 января 2009

Попробуйте этот код:

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'
Rake::Task["db:version"].invoke

Я только что попробовал это в ./script/console, и это сработало. Это не будет работать без require строк.

Я использую его для вызова других рейк-задач из рейк-задачи (когда это не предварительное требование, а что-то, что должно произойти в середине).

Обратите внимание, что вы не получите никакого вывода от команды. Если вы хотите, чтобы вы могли просто пойти с хорошими старыми галочками и запустить команду следующим образом:

output = `rake db:version`

Это запустит другой процесс, но я не думаю, что есть проблема с этим.

0 голосов
/ 26 января 2009

Поскольку, похоже, у вас проблемы с созданием базы данных, есть ли способ сделать это из панели управления хостингом? Тем не менее, как вы собираетесь перенести вашу базу данных? Похоже, вам может понадобиться посмотреть на нового хоста. Я использую Slicehost и думаю, что они великолепны:)

0 голосов
/ 26 января 2009

Ну, это небольшая проблема с куриным яйцом, вы можете запустить свой экземпляр RoR без создания базы данных, но я сомневаюсь в этом. Если ваш хостинг-провайдер может размещать приложения RoR, у них должен быть способ запустить rake или позволить вам каким-либо образом запустить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...