freeRangeEggs 0.0.3.alpha → 0.0.4.beta

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: 691f8e01abefa51c9775b4e5ece3f8efe59393b8
4
- data.tar.gz: 96d7926e8fee9851918082eedfc30685b0af4c31
3
+ metadata.gz: 523e2ce1d5a8c6f1216ca8c8da4fa3d15728329b
4
+ data.tar.gz: 12271e0ab0e2877e4854747ab56c0b07fdffcb55
5
5
  SHA512:
6
- metadata.gz: 104e8cfc3bdbd293ae4bc15317bb532744284f192335d9fd71c4f50351ed2aed5692e07a7ab1a3555daff7e4c2e83aad202e3d64319e6c873ffc63403386dfdf
7
- data.tar.gz: ce04f7af1dcb429e532833b6188e7a7dc3135a9f804ad7f0eb89ebd3a84d9fee62ed7f00f57d0154b45ea26f42bddd86c5e292947d5197b53d5c41fc1ff3ebb4
6
+ metadata.gz: 06b80cbfd77d510e977580fe97ce569596d26be2a5bd93df756412454e66da3e4eae7ed2a6f1fb21309f015114b14c7059cf05202850b26384461e5e05954049
7
+ data.tar.gz: 67a932adc5bb3ce523a57f3f64d153578390940ee275649feaa3ce742b95bb3186e6fa045c93863fe6e340544924f0a91aad1a5aae11cce92b63e6b6b1147e8f
@@ -9,7 +9,6 @@ Gem::Specification.new do |gem|
9
9
  gem.homepage = "https://github.com/jaxi"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
12
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
13
  gem.name = "freeRangeEggs"
15
14
  gem.add_dependency 'rails'
File without changes
@@ -1,3 +1,3 @@
1
1
  module FreeRangeEggs
2
- VERSION = "0.0.3.alpha"
3
- end
2
+ VERSION = "0.0.4.beta"
3
+ end
@@ -0,0 +1,159 @@
1
+ module JsonToActiveRecord
2
+ require 'json'
3
+ require 'erb'
4
+ require 'zip/zip'
5
+ ID_ATTR = {
6
+ 'name' => 'id',
7
+ 'type' => 'Integer'
8
+ }
9
+
10
+ SINGLE_TEST_DATA = {
11
+ 'name' => 'user',
12
+ 'attrs' => [
13
+ {
14
+ 'name' => 'first_name',
15
+ 'type' => 'string'
16
+ },
17
+ {
18
+ 'name' => 'last_name',
19
+ 'type' => 'string'
20
+ },
21
+ {
22
+ 'name' => 'no',
23
+ 'type' => 'integer'
24
+ },
25
+ {
26
+ 'name' => 'description',
27
+ 'type' => 'text'
28
+ }
29
+ ]
30
+ }
31
+
32
+ class Generator
33
+ attr_accessor :name, :attrs
34
+
35
+ def initialize(model)
36
+ @name = model['name']
37
+ @attrs = model['attrs'] + [ID_ATTR]
38
+ end
39
+
40
+ def to_s
41
+ "#{@name}\n#{@attrs}"
42
+ end
43
+
44
+ def get_binding
45
+ binding
46
+ end
47
+
48
+ def self.define_component(name)
49
+
50
+ define_method('get_result') do
51
+
52
+ filename = File.expand_path(
53
+ "./templates/#{name.to_s}.erb",
54
+ File.dirname( __FILE__ ))
55
+
56
+ erb_file = ERB.new File.read(filename)
57
+ erb_file.result self.get_binding
58
+ end
59
+ end
60
+ end
61
+
62
+ class MigrationGenerator < Generator
63
+ define_component :migration
64
+ end
65
+
66
+ class ModelGenerator < Generator
67
+ define_component :model
68
+ end
69
+
70
+ def JsonToActiveRecord.generate_project(project)
71
+
72
+ models = project['models']
73
+
74
+ models.each do |m|
75
+ model = ModelGenerator.new m
76
+ model.get_result
77
+
78
+ migration = MigrationGenerator.new m
79
+ migration.get_result
80
+ end
81
+ end
82
+
83
+ class ProjectGenerator
84
+
85
+ attr_accessor :username, :project, :dir, :models, :model_dir, :migration_dir
86
+
87
+ def initialize(project)
88
+ @username = project["username"]
89
+ @project = project['project']
90
+ @models = project['models']
91
+
92
+ @dir = "#{Rails.root}/tmp/#{@username}/#{@project}"
93
+ @model_dir = "#{@dir}/models"
94
+ @migration_dir = "#{@dir}/migrations"
95
+
96
+ `rm -rf #{@dir}`
97
+ `rm -rf #{Rails.root}/tmp/#{@username}/#{@project}.zip`
98
+ `mkdir -p #{@model_dir}`
99
+ `mkdir -p #{@migration_dir}`
100
+ end
101
+
102
+ def generate_models
103
+ @models.each do |m|
104
+ model = ModelGenerator.new m
105
+
106
+ File.open("#{@model_dir}/#{m['name']}.rb", "w") do |file|
107
+ content = model.get_result
108
+ file.write content
109
+ end
110
+ end
111
+
112
+ @models.map do |m|
113
+ "models/#{m['name']}.rb"
114
+ end
115
+ end
116
+
117
+ def generate_migrations
118
+ @models.each do |m|
119
+ migration = MigrationGenerator.new m
120
+
121
+ File.open("#{@migration_dir}/#{m['name'].pluralize}.rb", 'w') do |file|
122
+ content = migration.get_result
123
+ file.write content
124
+ end
125
+ end
126
+
127
+ @models.map do |m|
128
+ "migrations/#{m['name'].pluralize}.rb"
129
+ end
130
+ end
131
+
132
+ def generate_project
133
+ models = generate_models
134
+ migrations = generate_migrations
135
+
136
+ zipfile_name = "#{Rails.root}/tmp/#{@username}/#{@project}.zip"
137
+
138
+ Zip::ZipFile.open(zipfile_name, Zip::ZipFile::CREATE) do |zipfile|
139
+
140
+ models.each do |model|
141
+ zipfile.add model, "#{@dir}/#{model}"
142
+ end
143
+
144
+ migrations.each do |migrations|
145
+ zipfile.add migrations, "#{@dir}/#{migrations}"
146
+ end
147
+
148
+ end
149
+ return zipfile_name
150
+ end
151
+ end
152
+
153
+ def JsonToActiveRecord.test
154
+
155
+ project = ProjectGenerator.new Project.first.hashtify
156
+ project.generate_project
157
+ end
158
+
159
+ end
File without changes
@@ -2,11 +2,9 @@ class Create<%= @name.capitalize.pluralize %> < ActiveRecord::Migration
2
2
  def change
3
3
  create table <%= @name.pluralize.to_sym %> do |t|
4
4
  <% @attrs.each do |v| %>
5
- t.<%= v["type"] %> <%= ":#{v['name']}" %><% end %>
5
+ t.<%= v["type"] %> <%= ":#{v['name']}" %>
6
+ <% end %>
6
7
  t.timestamps
7
8
  end
8
- <% if @indexes %>
9
- <% @indexes.each do |index| %>
10
- add_index <%= name.pluralize.to_sym %>, index<% end %><% end %>
11
9
  end
12
10
  end
@@ -1,3 +1,3 @@
1
1
  class <%= @name.capitalize %> < ActiveRecord::Base
2
- attr_accessible <%= @attrs.map{ |x| ':' +x["name"]}.join(", ") %>
2
+ attr_accessible <%= @attrs.select{|x| x["name"] != 'id' }.map{ |x| ':' +x["name"]}.join(", ") %>
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freeRangeEggs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3.alpha
4
+ version: 0.0.4.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - jaxi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-23 00:00:00.000000000 Z
11
+ date: 2013-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -41,8 +41,7 @@ dependencies:
41
41
  description: This gem is used to convert the json to Active Records
42
42
  email:
43
43
  - jaxihe@gmail.com
44
- executables:
45
- - fre
44
+ executables: []
46
45
  extensions: []
47
46
  extra_rdoc_files: []
48
47
  files:
@@ -53,11 +52,11 @@ files:
53
52
  - LICENSE
54
53
  - README.md
55
54
  - Rakefile
56
- - bin/fre
57
55
  - freeRangeEggs.gemspec
58
- - lib/data
59
- - lib/freeRangeEggs.rb
56
+ - lib/assets/.gitkeep
60
57
  - lib/freeRangeEggs/version.rb
58
+ - lib/json_to_active_record.rb
59
+ - lib/tasks/.gitkeep
61
60
  - lib/templates/migration.erb
62
61
  - lib/templates/model.erb
63
62
  - spec/spec_helper.rb
@@ -80,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
79
  version: 1.3.1
81
80
  requirements: []
82
81
  rubyforge_project:
83
- rubygems_version: 2.0.0
82
+ rubygems_version: 2.0.3
84
83
  signing_key:
85
84
  specification_version: 4
86
85
  summary: A lot of command to be written... Not NOW
data/bin/fre DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
4
- $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
5
-
6
- args = ARGV.dup
7
- ARGV.clear
8
-
9
- puts lib
10
- require 'thor'
11
- `ruby #{lib}/run.rb work #{args[0]}`
data/lib/data DELETED
@@ -1,38 +0,0 @@
1
- {
2
- "models" : [
3
-
4
- // Customer Model
5
- {
6
- "name" : "customer",
7
- "attrs" : [
8
- {
9
- "name" : "id",
10
- "type" : "integer"
11
- },
12
- {
13
- "name" : "name",
14
- "type" : "string"
15
- }
16
- ],
17
- },
18
-
19
- // Order Model
20
- {
21
- "name" : "order",
22
- "attrs" : [
23
- {
24
- "name" : "id",
25
- "type" : "integer"
26
- },
27
- {
28
- "name" : "name",
29
- "type" : "string"
30
- },
31
- {
32
- "name" : "customer",
33
- "type" : "references"
34
- }
35
-
36
- ]
37
- }
38
- }
data/lib/freeRangeEggs.rb DELETED
@@ -1,62 +0,0 @@
1
- require "freeRangeEggs/version"
2
-
3
- module FreeRangeEggs
4
- # The gems required
5
- require 'json'
6
- require 'erb'
7
- require 'active_support/inflector'
8
-
9
- class MigrationGenerator
10
-
11
- attr_accessor :name, :attrs
12
-
13
- def initialize(model)
14
- @model_name = model["name"]
15
- @attrs = model["attrs"] + [ {"name": "id", "type" : "integer"}]
16
- end
17
-
18
- def to_s
19
- return "Model Name: #{@name} \n
20
- Attributes: #{@attrs}"
21
- end
22
-
23
- def get_binding
24
- binding
25
- end
26
-
27
- def get_result
28
- migration = ERB.new(File.read("./templates/migration.erb"))
29
- migration.run(self.get_binding)
30
- end
31
- end
32
-
33
- class ModelGenerator
34
- attr_accessor :model_name, :variables, :relationships
35
-
36
- def initialize(model)
37
- @model_name = model["model"]
38
- @variables = model["attrs"] + [{"name": "id", "type" : "integer"}]
39
- end
40
-
41
- def to_s
42
- return "Model Name: #{@name}\n
43
- Attributes: #{@attrs}"
44
- end
45
-
46
- def get_binding
47
- binding
48
- end
49
-
50
- def get_result
51
- the_model = ERB.new(File.read("./templates/model.erb"))
52
- the_model.run(self.get_binding)
53
- end
54
- end
55
-
56
- class RelathionshipModelGenerator
57
- end
58
-
59
- class RelationshipMigrationGenerator
60
- end
61
-
62
- end