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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27de4129826c5db63af2490801c3fa81261eeb36
4
- data.tar.gz: 7a54089e8550dea5e52d53c0bd0a638fb7f36c8e
3
+ metadata.gz: dfa9e48c563ed020bc8231c6b28274d849afcc2f
4
+ data.tar.gz: cb1569d4994001adcb2efc2fb9f94620ba4be15f
5
5
  SHA512:
6
- metadata.gz: c6b808ff61e3cf8b49abc2cb54bb04997fb3f5cdb899fcf9c37b6ae6a7a310abbe3cbace17fee0044d9463760e08ef379633c7f9c113a760f1e991914fed3de3
7
- data.tar.gz: c06a8348edb9e3ab3765904c3bbcb0c5166d716f7f403bae7d3fb7be7d7a4cdfae7d17ce892a3f4fa4e3f6f7eef54913546eeed34f25d49ee9d232dd443a9ec1
6
+ metadata.gz: a5016eb92c3a6dec889b2d960ddbeabc63e6d63b01370efb64afc585ae76f0e237fd6bf8eb6879ba668d4eb79e00fd9d0aa2cde7d1bdc7bc79581fd804b36e17
7
+ data.tar.gz: 58399bc7f87231a35e9c0993b79b9caa35cc9315944bf2fdd468e68129ddaa3aa4d0995811792ed86bb3da8e6e08a09789ed65af719b2156fa9b2b0194aa588a
data/lib/ez.rb CHANGED
@@ -2,6 +2,8 @@ require "ez/version"
2
2
  require 'ez/dispatcher.rb'
3
3
  require 'ez/mapper.rb'
4
4
  require 'ez/apis.rb'
5
+ require 'ez/domain_modeler.rb'
6
+ require 'ez/controller.rb'
5
7
 
6
8
  module Ez
7
9
  class MyRailtie < Rails::Railtie
@@ -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 DbModifier
1
+ class SchemaModifier
2
2
 
3
3
  attr_reader :db, :spec
4
4
 
5
- def initialize
6
- ActiveRecord::Base.establish_connection({
7
- adapter: 'sqlite3',
8
- database: "db/development.sqlite3",
9
- })
10
- @db = ActiveRecord::Base.connection
11
- ActiveRecord::Migration.verbose = false
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
- @change = true
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 load_models_yml
133
- @spec = YAML.load_file('db/models.yml')
134
- @spec ||= {}
132
+ def silence_migration_output
133
+ ActiveRecord::Migration.verbose = false
134
+ end
135
135
 
136
- @spec.each do |model, columns|
137
- @spec[model] = []
138
- columns.each do |column|
139
- if column.is_a?(String) || column.is_a?(Symbol)
140
- @spec[model] << { column.to_s => 'string' }
141
- elsif column.is_a?(Hash) && column.keys.count == 1
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
@@ -1,3 +1,3 @@
1
1
  module Ez
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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
- db = DbModifier.new
13
- db.migrate
10
+ DomainModeler.update_tables
11
+ Rake::Task["db:schema:dump"].invoke
14
12
  else
15
- puts "To get started, edit the db/models.yml file to describe your table schema."
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.1
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-01 00:00:00.000000000 Z
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: