RoR インストールの場合、rakeroot アクセスなしでコマンドを実行する方法はありますか?
別の言い方をすれば、ルートアクセスなしで取得db:createしdb:migrateて実行する方法はありますか (おそらく自動的にまたは何か)? またはrake、RoR からコマンドを実行できますcontrollerか?
RoR インストールの場合、rakeroot アクセスなしでコマンドを実行する方法はありますか?
別の言い方をすれば、ルートアクセスなしで取得db:createしdb:migrateて実行する方法はありますか (おそらく自動的にまたは何か)? またはrake、RoR からコマンドを実行できますcontrollerか?
を見て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 アプリをホストできる場合は、RoR アプリを実行する方法、rakeまたは何らかの方法で実行させる方法が必要です。
データベースの作成で問題が発生しているようですが、ホスティング コントロール パネルから行う方法はありますか? それでも、データベースをどのように移行しますか? 新しいホストを確認する必要があるようです。私は Slicehost を使用していますが、素晴らしいと思います :)
このコードを試してください:
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 アクセスは必要ありません。そのマシンへのシェル (ssh) アクセスのみが必要です。
アクセスなしでどのように展開していますか? カピストラーノを使用している場合は、すでにシェル アクセスがあり、それらのタスクを実行できます。