freeRangeEggs 0.0.4.beta → 0.0.5.beta
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/freeRangeEggs/version.rb +1 -1
- metadata +1 -2
- data/lib/json_to_active_record.rb +0 -159
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f36b0300f8561f8cf478cbd1c81a9f3460611d2
|
4
|
+
data.tar.gz: 90387d6d459b7985d771058eeaa22fae98f57853
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26967781576a2713a3f56119d7749719bfbedf8497be6a14b89eea71a22fe6d64b03bb3d39e2c721347421cc9bd7b4ef10b9d31f15390e82d93f5607ba3fb7cd
|
7
|
+
data.tar.gz: 6bf705294d1b865487bbbc091611cd794cb2a3790611d372a19fd03804570253c8a5a16278fdbd4233e5d047f4dabf98f8249a55102bd2a14e77a6168d59d5b5
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: freeRangeEggs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jaxi
|
@@ -55,7 +55,6 @@ files:
|
|
55
55
|
- freeRangeEggs.gemspec
|
56
56
|
- lib/assets/.gitkeep
|
57
57
|
- lib/freeRangeEggs/version.rb
|
58
|
-
- lib/json_to_active_record.rb
|
59
58
|
- lib/tasks/.gitkeep
|
60
59
|
- lib/templates/migration.erb
|
61
60
|
- lib/templates/model.erb
|
@@ -1,159 +0,0 @@
|
|
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
|