2011-04-01 3 views
0

(共有ホストへの)デプロイメント中に、データベースに特定のデータが格納されているかどうかを確認したい場合は、デプロイメントプロセス中に挿入したいと思います。誰も私が説明したことをする方法を知っていますか?配備中にデータをシードする方法は?

+0

はあなたがチェックアウトしましRailsのマイグレーションガイド:http://guides.rubyonrails.org/migrations.html –

+0

@Mladen Jablanovic:はい、私はガイドをチェックアウトしました。問題は私はsshアクセスを持っていないので、 'rake'コマンドを実行できません。 – DanMark

答えて

0

個人的には、テスト中であろうとなかろうと、私のデータベースにデータを取り込むのが好きです。それらを作成したら、RAKEタスクを作成してデータベースをリセットし、それを設定することができます。私はこのreset_db.rakeタスクを持っています:

namespace :db do 
    desc "Drop, create, migrate, seed the database and prepare the test database for rspec" 
    task :reset_db => :environment do 
    Rake::Task['db:drop'].invoke 
    Rake::Task['db:create'].invoke 
    Rake::Task['db:migrate'].invoke 
    Rake::Task['db:fixtures:load'].invoke 
    Rake::Task['db:test:prepare'].invoke 
    end 
end 

my/lib/tasksフォルダにあります。私はそれを "rake db:reset_db"で実行します。

+0

それは、工場の代わりに有用である場合には議論の余地がある意図された目的の外に器具を使用することは本当に悪い考えです – Wes

+0

まあ、Railsの作成者であるDavid Hannsonは同意していないようです。私も同様に、申し訳ありません。 – Spyros

0

他のデータベースに関してホストにどの程度の柔軟性があるかわかりませんが(これらの値のためだけに別のデータベースを作成できるかどうかわかりませんが)、これらのデータをxmlドキュメントに入れてからこれらの値が存在しない場合は挿入するスクリプト。

+0

Railsとrake db:seedにアクセスすると、なぜこれを行うのですか? – Wes

0

--- dbディレクトリ内seed.rbというファイル(app_rootがあり

DBのSEEDアプローチ ---/db/seeds.rb)ここで、シードデータを追加できます。コメントアウトされた指示がファイルにあります(下記参照)。

Users.create(
      :email=>"dummy", :pwd_hash=>"3x35zbb2...", 
      :pwd_salt=>'423x', :admin=>true 
) 

を...そしてすくいデシベルを実行します:

# This file should contain all the record creation needed to seed the database with its default values. 
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). 
# 
# Examples: 
# 
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) 
# Mayor.create(name: 'Emanuel', city: cities.first) 

あなたが例えばを追加するレコードで埋めることができ種子は、あなたのテーブルにレコードを追加します。

--- EDITINGの移行方法 ---

最も簡単なオプション(ただしDB:種子はおそらく優れている)だけでシード・データを移行を実行することです。ちょうどこれをしなければならなかった。サイトにはサインアップオプションがないため、管理者権限を持つシードユーザーが必要でした。移行ファイルの下:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :email 
     t.string :password 
     t.string :name 
     t.boolean :admin 
     t.integer :company_id 

     t.timestamps 
    end 

    #create the seed user with admin priviledges 
    User.create!(:email=>"[email protected]", :password=>"test", :name=>"Dummy", :admin=>true, :company_id=>0) 

    end 
end 
関連する問題