ez 0.9.0 → 0.9.1
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/ez.gemspec +1 -1
- data/lib/ez.rb +8 -7
- data/lib/ez/controller.rb +20 -20
- data/lib/ez/domain_modeler.rb +2 -2
- data/lib/ez/schema_modifier.rb +43 -22
- data/lib/ez/version.rb +1 -1
- data/lib/tasks/ez_tasks.rake +11 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bbacb9af6fd2f80c8aed574c56265d9f7e9af8c
|
4
|
+
data.tar.gz: 529687c8f65652ff1c9133d0fee355cd0204cd67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c36d5521426c59b5f9fbf483bedd3cff07fc24f404556f868fffc6bc402a00d2152bbd97c70bf32f3da08f2c26b88686fe1d63c25449afc6a6ab6eb13ca9fd18
|
7
|
+
data.tar.gz: 9dd7a0f3d63031b615be468a56a45b34319ed02226314f98e132338dde81ce5b9a0bf6cb5f1d372702e582aae1e66deb69ad45075ce9b229a8b5df6a55194b9c
|
data/ez.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = []
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.
|
21
|
+
spec.add_development_dependency 'hirb', '~> 0.7.1'
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
24
|
spec.add_development_dependency "rake", '~> 10.0', '>= 10.0.0'
|
data/lib/ez.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
require "ez/version"
|
2
|
-
require 'ez/dispatcher.rb'
|
3
|
-
require 'ez/mapper.rb'
|
2
|
+
# require 'ez/dispatcher.rb'
|
3
|
+
# require 'ez/mapper.rb'
|
4
|
+
# require 'ez/controller.rb'
|
5
|
+
|
4
6
|
require 'ez/apis.rb'
|
5
7
|
require 'ez/domain_modeler.rb'
|
6
|
-
# require 'ez/controller.rb'
|
7
8
|
require 'ez/model.rb'
|
8
9
|
require 'ez/view_helpers.rb'
|
9
|
-
|
10
|
+
|
11
|
+
require 'hirb' if Rails.env.development?
|
10
12
|
|
11
13
|
module EZ
|
12
14
|
class Railtie < Rails::Railtie
|
@@ -14,9 +16,8 @@ module EZ
|
|
14
16
|
load "tasks/ez_tasks.rake"
|
15
17
|
end
|
16
18
|
|
17
|
-
console do
|
18
|
-
Hirb.enable if Rails.env.development? && defined?(Hirb)
|
19
|
-
# context.back_trace_limit = 0
|
19
|
+
console do |app|
|
20
|
+
Hirb.enable(pager: false) if Rails.env.development? && defined?(Hirb)
|
20
21
|
|
21
22
|
I18n.enforce_available_locales = false
|
22
23
|
puts "Welcome to the Rails Console."
|
data/lib/ez/controller.rb
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module ActionController
|
2
|
+
class Base
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
helper_method :current_user
|
5
|
+
helper_method :user_signed_in?
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
def user_signed_in?
|
8
|
+
session[:user_id].present?
|
9
|
+
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
def sign_in_as(user)
|
12
|
+
@current_user = user
|
13
|
+
session[:user_id] = user.try(:id)
|
14
|
+
user
|
15
|
+
end
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
def sign_out
|
18
|
+
sign_in_as nil
|
19
|
+
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
def current_user(klass = User)
|
22
|
+
@current_user ||= klass.send(:find_by, id: session[:user_id])
|
23
|
+
end
|
24
24
|
|
25
|
-
|
26
|
-
|
25
|
+
end
|
26
|
+
end
|
data/lib/ez/domain_modeler.rb
CHANGED
@@ -23,7 +23,7 @@ module EZ
|
|
23
23
|
@spec[model] = []
|
24
24
|
columns.each do |column|
|
25
25
|
if column.is_a?(String) || column.is_a?(Symbol)
|
26
|
-
if column.to_s =~ /_id$/
|
26
|
+
if column.to_s =~ /_id$/ || column.to_s =~ /_count$/
|
27
27
|
@spec[model] << { column.to_s => 'integer' }
|
28
28
|
elsif column.to_s =~ /_at$/
|
29
29
|
@spec[model] << { column.to_s => 'datetime' }
|
@@ -35,7 +35,7 @@ module EZ
|
|
35
35
|
elsif column.is_a?(Hash) && column.keys.count == 1
|
36
36
|
@spec[model] << { column.keys.first.to_s => column.values.first.to_s }
|
37
37
|
else
|
38
|
-
raise "Bad syntax."
|
38
|
+
raise "Bad syntax around `#{column.inspect}`"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
data/lib/ez/schema_modifier.rb
CHANGED
@@ -17,9 +17,18 @@ module EZ
|
|
17
17
|
|
18
18
|
add_missing_schema
|
19
19
|
remove_dead_schema
|
20
|
-
update_schema_version
|
21
20
|
|
22
|
-
|
21
|
+
if @changed
|
22
|
+
update_schema_version
|
23
|
+
else
|
24
|
+
puts "Everything is up-to-date."
|
25
|
+
end
|
26
|
+
|
27
|
+
return @changed
|
28
|
+
|
29
|
+
rescue => e
|
30
|
+
puts e.message
|
31
|
+
false
|
23
32
|
end
|
24
33
|
|
25
34
|
|
@@ -50,40 +59,50 @@ module EZ
|
|
50
59
|
@changed = true
|
51
60
|
end
|
52
61
|
|
53
|
-
def add_missing_columns(model_name, columns)
|
62
|
+
def add_missing_columns(model_name, columns, assume_missing = false)
|
54
63
|
table_name = model_name.tableize
|
55
64
|
columns.each do |column|
|
56
65
|
col_name = column.keys.first
|
57
66
|
col_type = column[col_name]
|
58
|
-
if db.column_exists?(table_name, col_name.to_sym)
|
67
|
+
if !assume_missing && db.column_exists?(table_name, col_name.to_sym)
|
59
68
|
unless db.column_exists?(table_name, col_name.to_sym, col_type.to_sym)
|
60
69
|
display_change "Changing column type for '#{col_name}' to #{col_type}"
|
61
70
|
db.change_column(table_name, col_name.to_sym, col_type.to_sym)
|
71
|
+
if col_name.to_s =~ /_id$/
|
72
|
+
display_change " (adding foreign_key index for '#{col_name}')"
|
73
|
+
db.add_index table_name, col_name.to_sym
|
74
|
+
end
|
62
75
|
end
|
63
76
|
else
|
64
|
-
|
77
|
+
if !assume_missing
|
78
|
+
display_change "Adding new column '#{col_name}' as #{col_type} for model #{model_name}"
|
79
|
+
end
|
65
80
|
options = {}
|
66
81
|
options[:default] = false if col_type.to_sym == :boolean
|
67
|
-
db.add_column(table_name, col_name.to_sym, col_type.to_sym)
|
82
|
+
db.add_column(table_name, col_name.to_sym, col_type.to_sym, options)
|
83
|
+
if col_name.to_s =~ /_id$/
|
84
|
+
display_change " (adding foreign_key index for '#{col_name}')"
|
85
|
+
db.add_index table_name, col_name.to_sym
|
86
|
+
end
|
68
87
|
end
|
69
88
|
end
|
70
89
|
end
|
71
90
|
|
72
91
|
def add_model(model_name, columns)
|
73
92
|
table_name = model_name.tableize
|
74
|
-
display_change "Defining model #{model_name}
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
end
|
93
|
+
display_change "Defining new table for model '#{model_name}'."
|
94
|
+
db.create_table table_name
|
95
|
+
add_missing_columns model_name, columns, true
|
96
|
+
# columns.each do |column|
|
97
|
+
# name = column.keys.first
|
98
|
+
# col_type = column[name]
|
99
|
+
# options = {}
|
100
|
+
# options[:default] = false if col_type.to_sym == :boolean
|
101
|
+
# t.send(col_type, name, options)
|
102
|
+
# end
|
103
|
+
# # t.timestamps
|
104
|
+
# end
|
105
|
+
# end
|
87
106
|
filename = "app/models/#{model_name.underscore}.rb"
|
88
107
|
unless Rails.env.production? || File.exists?(filename)
|
89
108
|
display_change "Creating new model file: #{filename}"
|
@@ -109,7 +128,9 @@ module EZ
|
|
109
128
|
end
|
110
129
|
dead_columns = columns - spec_columns
|
111
130
|
if dead_columns.any?
|
112
|
-
|
131
|
+
dead_columns.each do |dead_column_name|
|
132
|
+
display_change "Removing unused column '#{dead_column_name}' from model '#{model_name}'"
|
133
|
+
end
|
113
134
|
db.remove_columns(table_name, *dead_columns)
|
114
135
|
end
|
115
136
|
end
|
@@ -117,8 +138,8 @@ module EZ
|
|
117
138
|
end
|
118
139
|
|
119
140
|
def update_schema_version
|
120
|
-
|
121
|
-
|
141
|
+
db.initialize_schema_migrations_table
|
142
|
+
db.assume_migrated_upto_version(Time.now.utc.strftime("%Y%m%d%H%M%S"))
|
122
143
|
end
|
123
144
|
|
124
145
|
def remove_dead_tables
|
data/lib/ez/version.rb
CHANGED
data/lib/tasks/ez_tasks.rake
CHANGED
@@ -2,7 +2,9 @@ namespace :ez do
|
|
2
2
|
|
3
3
|
desc "Generate models.yml if it doesn't exist yet."
|
4
4
|
task :generate_yml do
|
5
|
-
|
5
|
+
filename = "db/models.yml"
|
6
|
+
unless File.exist?(filename)
|
7
|
+
File.open(filename, "w") do |f|
|
6
8
|
f.puts <<-EOS
|
7
9
|
# Example table for a typical Book model.
|
8
10
|
#
|
@@ -18,26 +20,27 @@ namespace :ez do
|
|
18
20
|
# You can have as many models as you want in this file.
|
19
21
|
EOS
|
20
22
|
end
|
23
|
+
end
|
21
24
|
end
|
22
25
|
|
23
|
-
desc "
|
26
|
+
desc "Erases all data, and builds all table schema from scratch."
|
24
27
|
task :reset_tables => ['db:drop', :tables] do
|
25
28
|
end
|
26
29
|
|
27
30
|
|
28
31
|
desc "Attempts to update the database schema and model files with minimal data loss."
|
29
|
-
task :tables => :environment do
|
32
|
+
task :tables => [:environment, 'db:migrate'] do
|
30
33
|
if File.exists?('db/models.yml')
|
31
|
-
EZ::DomainModeler.update_tables
|
32
|
-
|
34
|
+
if EZ::DomainModeler.update_tables
|
35
|
+
Rake::Task["db:schema:dump"].invoke unless Rails.env.production?
|
36
|
+
end
|
33
37
|
else
|
34
|
-
emit_help_page
|
35
38
|
Rake::Task["ez:generate_yml"].invoke
|
39
|
+
emit_help_page
|
36
40
|
end
|
37
41
|
end
|
38
42
|
|
39
43
|
def emit_help_page
|
40
|
-
puts "
|
41
|
-
|
44
|
+
puts "You can now edit the db/models.yml file to describe your table schema."
|
42
45
|
end
|
43
46
|
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.9.
|
4
|
+
version: 0.9.1
|
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-
|
11
|
+
date: 2014-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hirb
|
@@ -17,7 +17,7 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.7.1
|
20
|
-
type: :
|
20
|
+
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|