2016-10-22 3 views
0

Я совершенно новый для ruby, я хочу создать сценарий миграции базы данных для базы данных MySQL. Я просмотрел онлайн-материал, где мне пришлось создать приложение inorder для создания сценариев миграции.Ruby MySQL Migration Script

Могу ли я написать сценарий переноса базы данных в одном файле, который выполняет следующие задачи:

  1. Создание базы данных
  2. Создать 2-3 таблицы
  3. Seed некоторые данные в этих таблицах

Любая помощь или ссылка будет отличным

Заранее спасибо

+0

Почему вы хотите написать сценарий, который делает это? Позволить другим (или вам позже) воссоздать базу данных в будущем? –

+0

Да, я мог бы использовать скрипт, чтобы сделать то же самое, с некоторыми предварительными изменениями, такими как вверх и вниз. –

+0

Посмотрите на https://github.com/thuss/standalone-migrations. С помощью этого драгоценного камня вы можете использовать миграцию Rails, не создавая проект Rails. – slowjack2k

ответ

0

Вы можете использовать только один драгоценный камень mysql2 - https://stackoverflow.com/a/14435522/3102718

или mysql2 с ActiveRecord.

Вот пример миграции файла:

create_database.rb

require 'mysql2' 

client = Mysql2::Client.new(host: 'localhost', username: 'root') 
client.query("CREATE DATABASE my_database") 

require 'active_record' 

class CreateUsers < ActiveRecord::Migration 
    def self.up 
    create_table :users do |t| 
     t.string :name 
     t.string :email 
    end 

    add_index :users, :email, unique: true 
    end 
end 

class CreatePosts < ActiveRecord::Migration 
    def self.up 
    create_table :posts do |t| 
     t.references :user, index: true 
     t.string :title 
     t.text :body 
    end 
    end 
end 

ActiveRecord::Base.establish_connection(
    adapter: 'mysql2', 
    encoding: 'utf8', 
    host: 'localhost', 
    database: 'my_database', 
    username: 'root', 
    socket: '/tmp/mysql.sock' 
) 

CreateUsers.up 
CreatePosts.up 

class User < ActiveRecord::Base 
    has_many :posts 
end 

class Post < ActiveRecord::Base 
    belongs_to :user 
end 

user = User.create(email: "[email protected]", name: "User") 
user.posts.create(title: "My Post", body: "Lorem ipsum") 

Выполнить его $ ruby create_database.rb (драгоценные камни mysql2 и activerecord должен быть установлен).

+0

Спасибо, это сработало, просто для других убедитесь, что вы даете правильный путь для сокета mysql. –

 Смежные вопросы

  • Нет связанных вопросов^_^