slodd 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in slodd.gemspec
4
+ gemspec
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!
@@ -0,0 +1,3 @@
1
+ module Slodd
2
+ VERSION = "0.0.3"
3
+ end
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: []