ez 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/lib/ez.rb +2 -0
- data/lib/ez/controller.rb +26 -0
- data/lib/ez/domain_modeler.rb +35 -0
- data/lib/{tasks/db_modifier.rb → ez/schema_modifier.rb} +28 -33
- data/lib/ez/version.rb +1 -1
- data/lib/tasks/ez_tasks.rake +8 -7
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfa9e48c563ed020bc8231c6b28274d849afcc2f
|
4
|
+
data.tar.gz: cb1569d4994001adcb2efc2fb9f94620ba4be15f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5016eb92c3a6dec889b2d960ddbeabc63e6d63b01370efb64afc585ae76f0e237fd6bf8eb6879ba668d4eb79e00fd9d0aa2cde7d1bdc7bc79581fd804b36e17
|
7
|
+
data.tar.gz: 58399bc7f87231a35e9c0993b79b9caa35cc9315944bf2fdd468e68129ddaa3aa4d0995811792ed86bb3da8e6e08a09789ed65af719b2156fa9b2b0194aa588a
|
data/lib/ez.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
module ActionController
|
2
|
+
class Base
|
3
|
+
|
4
|
+
helper_method :current_user
|
5
|
+
helper_method :logged_in?
|
6
|
+
|
7
|
+
def logged_in?
|
8
|
+
session[:user_id].present?
|
9
|
+
end
|
10
|
+
|
11
|
+
def user_login(user)
|
12
|
+
@current_user = user
|
13
|
+
session[:user_id] = user ? user.id : nil
|
14
|
+
user
|
15
|
+
end
|
16
|
+
|
17
|
+
def user_logout
|
18
|
+
user_login nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def current_user(klass = User)
|
22
|
+
@current_user ||= klass.send(:find_by, id: session[:user_id])
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative 'schema_modifier'
|
2
|
+
|
3
|
+
class DomainModeler
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
load_model_specs
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.update_tables
|
10
|
+
self.new.update_tables
|
11
|
+
end
|
12
|
+
|
13
|
+
def update_tables
|
14
|
+
SchemaModifier.migrate(@spec)
|
15
|
+
end
|
16
|
+
|
17
|
+
def load_model_specs
|
18
|
+
@spec = YAML.load_file('db/models.yml')
|
19
|
+
@spec ||= {}
|
20
|
+
|
21
|
+
@spec.each do |model, columns|
|
22
|
+
@spec[model] = []
|
23
|
+
columns.each do |column|
|
24
|
+
if column.is_a?(String) || column.is_a?(Symbol)
|
25
|
+
@spec[model] << { column.to_s => 'string' }
|
26
|
+
elsif column.is_a?(Hash) && column.keys.count == 1
|
27
|
+
@spec[model] << { column.keys.first.to_s => column.values.first.to_s }
|
28
|
+
else
|
29
|
+
raise "Bad syntax."
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -1,36 +1,31 @@
|
|
1
|
-
class
|
1
|
+
class SchemaModifier
|
2
2
|
|
3
3
|
attr_reader :db, :spec
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
load_models_yml
|
5
|
+
def initialize(model_spec)
|
6
|
+
@spec = model_spec
|
7
|
+
connect_to_database
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.migrate(model_spec)
|
11
|
+
self.new(model_spec).migrate
|
13
12
|
end
|
14
13
|
|
15
14
|
def migrate
|
16
15
|
@changed = false
|
16
|
+
|
17
17
|
add_missing_schema
|
18
18
|
remove_dead_schema
|
19
|
+
update_schema_version
|
20
|
+
|
19
21
|
puts "Everything is up-to-date." unless @changed
|
20
22
|
end
|
21
23
|
|
24
|
+
|
22
25
|
def tables
|
23
26
|
@tables ||= (db.tables - ['schema_migrations'])
|
24
27
|
end
|
25
28
|
|
26
|
-
def has_model?(model_name)
|
27
|
-
has_table?(model_name.tableize)
|
28
|
-
end
|
29
|
-
|
30
|
-
def has_table?(name)
|
31
|
-
tables.index(name).present?
|
32
|
-
end
|
33
|
-
|
34
29
|
def missing_model?(model_name)
|
35
30
|
missing_table?(model_name.tableize)
|
36
31
|
end
|
@@ -51,7 +46,7 @@ class DbModifier
|
|
51
46
|
|
52
47
|
def display_change(message)
|
53
48
|
puts message
|
54
|
-
@
|
49
|
+
@changed = true
|
55
50
|
end
|
56
51
|
|
57
52
|
def add_missing_columns(model_name, columns)
|
@@ -116,6 +111,11 @@ class DbModifier
|
|
116
111
|
end
|
117
112
|
end
|
118
113
|
|
114
|
+
def update_schema_version
|
115
|
+
@db.initialize_schema_migrations_table
|
116
|
+
@db.assume_migrated_upto_version(Time.now.strftime("%Y%m%d%H%M%S"))
|
117
|
+
end
|
118
|
+
|
119
119
|
def remove_dead_tables
|
120
120
|
tables_we_need = @spec.keys.map { |model| model.tableize }
|
121
121
|
dead_tables = tables - tables_we_need
|
@@ -129,21 +129,16 @@ class DbModifier
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
-
def
|
133
|
-
|
134
|
-
|
132
|
+
def silence_migration_output
|
133
|
+
ActiveRecord::Migration.verbose = false
|
134
|
+
end
|
135
135
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
@spec[model] << { column.keys.first.to_s => column.values.first.to_s }
|
143
|
-
else
|
144
|
-
raise "Bad syntax."
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
136
|
+
def connect_to_database
|
137
|
+
ActiveRecord::Base.establish_connection({
|
138
|
+
adapter: 'sqlite3',
|
139
|
+
database: "db/development.sqlite3",
|
140
|
+
})
|
141
|
+
@db = ActiveRecord::Base.connection
|
148
142
|
end
|
143
|
+
|
149
144
|
end
|
data/lib/ez/version.rb
CHANGED
data/lib/tasks/ez_tasks.rake
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require_relative 'db_modifier'
|
2
|
-
|
3
1
|
namespace :ez do
|
4
2
|
|
5
3
|
desc "Reset the database scheme from scratch."
|
@@ -9,10 +7,15 @@ namespace :ez do
|
|
9
7
|
desc "Automatically update the database schema and model files."
|
10
8
|
task :tables => :environment do
|
11
9
|
if File.exists?('db/models.yml')
|
12
|
-
|
13
|
-
db.
|
10
|
+
DomainModeler.update_tables
|
11
|
+
Rake::Task["db:schema:dump"].invoke
|
14
12
|
else
|
15
|
-
|
13
|
+
emit_help_page
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def emit_help_page
|
18
|
+
puts "To get started, edit the db/models.yml file to describe your table schema."
|
16
19
|
File.open("db/models.yml", "w") do |f|
|
17
20
|
f.puts <<-EOS
|
18
21
|
# Example table for a typical Book model.
|
@@ -29,7 +32,5 @@ namespace :ez do
|
|
29
32
|
# You can have as many models as you want in this file.
|
30
33
|
EOS
|
31
34
|
end
|
32
|
-
end
|
33
35
|
end
|
34
|
-
|
35
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ez
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Cohen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -59,10 +59,12 @@ files:
|
|
59
59
|
- ez.gemspec
|
60
60
|
- lib/ez.rb
|
61
61
|
- lib/ez/apis.rb
|
62
|
+
- lib/ez/controller.rb
|
62
63
|
- lib/ez/dispatcher.rb
|
64
|
+
- lib/ez/domain_modeler.rb
|
63
65
|
- lib/ez/mapper.rb
|
66
|
+
- lib/ez/schema_modifier.rb
|
64
67
|
- lib/ez/version.rb
|
65
|
-
- lib/tasks/db_modifier.rb
|
66
68
|
- lib/tasks/ez_tasks.rake
|
67
69
|
homepage: http://www.jeffcohenonline.com/ez
|
68
70
|
licenses:
|