slodd 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/bin/slodd +46 -0
- data/lib/slodd/version.rb +3 -0
- data/lib/slodd.rb +44 -0
- data/slodd.gemspec +23 -0
- metadata +123 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/slodd
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'slodd'
|
4
|
+
require 'optparse'
|
5
|
+
options = Hash.new
|
6
|
+
|
7
|
+
OptionParser.new do |opt|
|
8
|
+
opt.on('-d', '--database DATABASE', "Database Name") do |d|
|
9
|
+
options[:database] = d
|
10
|
+
end
|
11
|
+
|
12
|
+
opt.on('-s', '--schema URI', "URI for schema.rb") do |s|
|
13
|
+
options[:url] = s
|
14
|
+
end
|
15
|
+
|
16
|
+
opt.on( '-f', '--file-schema-path PATH', 'Path to schema.rb') do |opt|
|
17
|
+
options[:file] = f
|
18
|
+
end
|
19
|
+
|
20
|
+
opt.on('-u', '--username USERNAME', "MySQL Username") do |u|
|
21
|
+
options[:username] = u
|
22
|
+
end
|
23
|
+
|
24
|
+
opt.on('-p', '--password PASSWORD', "MySQL Password") do |p|
|
25
|
+
options[:password] = p
|
26
|
+
end
|
27
|
+
|
28
|
+
opt.on('-h', '--host HOST', "MySQL Hostname") do |h|
|
29
|
+
options[:host] = h
|
30
|
+
end
|
31
|
+
end.parse!
|
32
|
+
|
33
|
+
puts options[:url]
|
34
|
+
puts options[:file]
|
35
|
+
|
36
|
+
unless options[:url] || options[:file]
|
37
|
+
puts "you must specify a file or a url"
|
38
|
+
exit 1
|
39
|
+
end
|
40
|
+
|
41
|
+
unless options[:database]
|
42
|
+
puts "you must specify a database or use the -r flag"
|
43
|
+
exit 1
|
44
|
+
end
|
45
|
+
|
46
|
+
Slodd::Base.new(options).run!
|
data/lib/slodd.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require "slodd/version"
|
2
|
+
require "rubygems"
|
3
|
+
require "active_record"
|
4
|
+
require "open-uri"
|
5
|
+
require "mysql2"
|
6
|
+
|
7
|
+
module Slodd
|
8
|
+
class Base
|
9
|
+
def initialize(options)
|
10
|
+
@url = options[:url]
|
11
|
+
@schema = options[:file]
|
12
|
+
@database_settings = {:adapter => "mysql2", :host => "localhost",:username => "root"}.merge options.reject {|key,| [:url,:file].include?(key) } || {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def run!
|
16
|
+
create_database
|
17
|
+
unless @schema
|
18
|
+
eval(open(@url){|f| f.read })
|
19
|
+
else
|
20
|
+
load(@schema)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def create_database
|
27
|
+
options = {:charset => 'utf8', :collation => 'utf8_unicode_ci'}
|
28
|
+
|
29
|
+
create_db = lambda do |config|
|
30
|
+
ActiveRecord::Base.establish_connection config.merge(:database => nil)
|
31
|
+
ActiveRecord::Base.connection.drop_database config[:database]
|
32
|
+
ActiveRecord::Base.connection.create_database config[:database], options
|
33
|
+
ActiveRecord::Base.establish_connection config
|
34
|
+
end
|
35
|
+
|
36
|
+
begin
|
37
|
+
create_db.call @database_settings
|
38
|
+
rescue Mysql::Error => sqlerr
|
39
|
+
$stderr.puts sqlerr.error
|
40
|
+
$stderr.puts "Couldn't create database for #{@database_settings.inspect}, charset: utf8, collation: utf8_unicode_ci"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/slodd.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'slodd/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "slodd"
|
8
|
+
gem.version = Slodd::VERSION
|
9
|
+
gem.authors = ["Ed Robinson"]
|
10
|
+
gem.email = ["ed.robinson@reevoo.com"]
|
11
|
+
gem.description = %q{Schema Loading On Dependent Databases}
|
12
|
+
gem.summary = %q{Schema Loading On Dependent Databases}
|
13
|
+
gem.homepage = ""
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
gem.add_dependency('activerecord')
|
20
|
+
gem.add_dependency('mysql2')
|
21
|
+
gem.add_development_dependency('rspec')
|
22
|
+
gem.add_development_dependency('rake')
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: slodd
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ed Robinson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-07-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activerecord
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: mysql2
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rake
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
description: Schema Loading On Dependent Databases
|
79
|
+
email:
|
80
|
+
- ed.robinson@reevoo.com
|
81
|
+
executables:
|
82
|
+
- slodd
|
83
|
+
extensions: []
|
84
|
+
extra_rdoc_files: []
|
85
|
+
files:
|
86
|
+
- .gitignore
|
87
|
+
- Gemfile
|
88
|
+
- Rakefile
|
89
|
+
- bin/slodd
|
90
|
+
- lib/slodd.rb
|
91
|
+
- lib/slodd/version.rb
|
92
|
+
- slodd.gemspec
|
93
|
+
homepage: ''
|
94
|
+
licenses: []
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ! '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
segments:
|
106
|
+
- 0
|
107
|
+
hash: 364340644202369550
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
segments:
|
115
|
+
- 0
|
116
|
+
hash: 364340644202369550
|
117
|
+
requirements: []
|
118
|
+
rubyforge_project:
|
119
|
+
rubygems_version: 1.8.25
|
120
|
+
signing_key:
|
121
|
+
specification_version: 3
|
122
|
+
summary: Schema Loading On Dependent Databases
|
123
|
+
test_files: []
|