ez 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: