Как заполнять данные во время развертывания? - PullRequest
0 голосов
/ 02 апреля 2011

Во время развертывания (на общем хосте) я хотел бы проверить, хранятся ли определенные данные в базе данных, если нет, я бы хотел вставить их во время процесса развертывания.Кто-нибудь знает, как сделать то, что я описал?

Ответы [ 4 ]

2 голосов
/ 02 апреля 2011

Выезд rake db:seed

Есть даже Railscast: http://railscasts.com/episodes/179-seed-data

0 голосов
/ 17 сентября 2012

--- ПОДБОР SEED ---

В каталоге db (app_root / db / seed.rb) есть файл с именем seed.rb, в который вы можете добавить начальные данные. Закомментированные инструкции доступны в файле (скопировано ниже).

# 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)

Вы можете заполнить записями, которые хотите добавить, например:

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

... и затем запустите rake db: seed, чтобы добавить записи в ваши таблицы.

--- РЕДАКТИРОВАНИЕ МИГРАЦИОННОГО ПОДХОДА ---

Самый простой вариант (хотя db: seed, вероятно, лучше) - просто запустить миграцию с данными seed. Просто должен был сделать это. Требуется начальный пользователь с правами администратора, потому что у сайта нет опции регистрации. Миграционный файл ниже:

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=>"dummy@dummy.com", :password=>"test", :name=>"Dummy", :admin=>true, :company_id=>0)

  end
end
0 голосов
/ 02 апреля 2011

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

0 голосов
/ 02 апреля 2011

Мне лично нравится использовать приборы для заполнения моей базы данных, независимо от того, тестируется она или нет. После того, как вы их создадите, вы можете просто создать грабли, чтобы сбросить базу данных и заполнить ее. У меня есть задача 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

в моей папке / lib / tasks. Я выполняю его с помощью "rake db: reset_db".

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