extend_at 0.1.5 → 0.2.0
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.
- data/.gitignore +2 -1
- data/.travis.yml +5 -0
- data/Gemfile +2 -1
- data/Gemfile.ci +10 -0
- data/README.markdown +19 -10
- data/Rakefile +2 -2
- data/lib/extend_at/version.rb +1 -1
- data/lib/extend_at.rb +21 -11
- data/spec/app/.gitignore +0 -1
- data/spec/app/app/models/article.rb +1 -1
- data/spec/app/app/models/user.rb +1 -1
- data/spec/app/config/database.sqlite.yml +14 -0
- data/spec/app/config/database.yml +5 -9
- data/spec/app/db/test.sqlite3 +0 -0
- data/spec/extend_at_spec.rb +19 -0
- metadata +16 -12
- data/spec/app/Gemfile.lock +0 -136
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.ci
ADDED
data/README.markdown
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
This gem allows you to extend models without migrations: This way you can, i.e., develop your own content types, like in Drupal.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Status:
|
6
6
|
|
7
|
-
|
7
|
+
[](http://travis-ci.org/anga/extend_at)
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
@@ -116,8 +116,6 @@ But you can use classes.
|
|
116
116
|
|
117
117
|
Else, return <code>:any</code>
|
118
118
|
|
119
|
-
You can use any class, but if you need use boolean values, you must use :boolean.
|
120
|
-
|
121
119
|
#### Set default value
|
122
120
|
|
123
121
|
class User < ActiveRecord::Base
|
@@ -159,6 +157,7 @@ You can use any class, but if you need use boolean values, you must use :boolean
|
|
159
157
|
end
|
160
158
|
|
161
159
|
#### Set validation
|
160
|
+
|
162
161
|
class User < ActiveRecord::Base
|
163
162
|
extend_at :extra, :columns => {
|
164
163
|
:private_photos => {
|
@@ -215,6 +214,21 @@ You can use any class, but if you need use boolean values, you must use :boolean
|
|
215
214
|
end
|
216
215
|
end
|
217
216
|
|
217
|
+
### Static columns
|
218
|
+
|
219
|
+
If you like to restrict the existent extended columns, you should use <code>:static => true</code>
|
220
|
+
|
221
|
+
class User < ActiveRecord::Base
|
222
|
+
extend_at :extra, :columns => {
|
223
|
+
:private_photos => {
|
224
|
+
:type => :boolean,
|
225
|
+
:default => true
|
226
|
+
}
|
227
|
+
}, :static => true
|
228
|
+
end
|
229
|
+
|
230
|
+
Now, <code>User.extra</code> only accept <code>private_photos</code> column
|
231
|
+
|
218
232
|
### Scopes
|
219
233
|
|
220
234
|
You can use scope like:
|
@@ -286,11 +300,6 @@ This code read the configuration of the columns when you access to the extra col
|
|
286
300
|
|
287
301
|
If you found a bug, create an issue. If you have a recomendation, idea, etc., create a request or fork the project.
|
288
302
|
|
289
|
-
## TODO:
|
290
|
-
|
291
|
-
* RSpec test
|
292
|
-
* Support static columns
|
293
|
-
|
294
303
|
## License
|
295
304
|
|
296
|
-
This gem is under MIT license.
|
305
|
+
This gem is under MIT license.
|
data/Rakefile
CHANGED
@@ -8,5 +8,5 @@ task :default => :spec
|
|
8
8
|
task :test => :spec
|
9
9
|
|
10
10
|
RSpec::Core::RakeTask.new(:spec) do
|
11
|
-
system "echo \"recreating database \" && cd #{File.join(File.dirname(__FILE__), 'spec', 'app')} && rake db:migrate:reset"
|
12
|
-
end
|
11
|
+
system "echo \"recreating database \" && cd #{File.join(File.dirname(__FILE__), 'spec', 'app')} && bundle install && rake db:migrate:reset"
|
12
|
+
end
|
data/lib/extend_at/version.rb
CHANGED
data/lib/extend_at.rb
CHANGED
@@ -8,16 +8,24 @@ module ExtendModelAt
|
|
8
8
|
base.extend(ClassMethods)
|
9
9
|
end
|
10
10
|
|
11
|
+
# Errors
|
12
|
+
class InvalidColumn < Exception
|
13
|
+
end
|
14
|
+
|
15
|
+
class ArgumentError < Exception
|
16
|
+
end
|
17
|
+
|
11
18
|
# The object how controll the data
|
12
19
|
class Extention
|
13
20
|
def initialize(options={})
|
21
|
+
@static = options[:static] || false
|
14
22
|
@model = options[:model]
|
15
23
|
@column_name = options[:column_name].to_s
|
16
24
|
@columns = options[:columns]
|
17
25
|
@value = get_defaults_values options
|
18
26
|
@model_manager = ::ExtendModelAt::ModelManager.new(@column_name, @model, @columns)
|
19
27
|
|
20
|
-
raise "#{@column_name} should by text or string not #{options[:model].column_for_attribute(@column_name.to_sym).type}" if not [:text, :stiring].include? options[:model].column_for_attribute(@column_name.to_sym).type
|
28
|
+
raise ExtendModelAt::ArgumentError, "#{@column_name} should by text or string not #{options[:model].column_for_attribute(@column_name.to_sym).type}" if not [:text, :stiring].include? options[:model].column_for_attribute(@column_name.to_sym).type
|
21
29
|
|
22
30
|
initialize_values
|
23
31
|
end
|
@@ -30,7 +38,7 @@ module ExtendModelAt
|
|
30
38
|
if not valid_type? value, @columns[key.to_sym].try(:[],:type)
|
31
39
|
# Try to adapt the value
|
32
40
|
adapter = get_adapter key, value
|
33
|
-
raise "#{value.inspect} is not a valid type, expected #{@columns[key.to_sym][:type]}" if adapter.nil? # We can't adapt the value
|
41
|
+
raise ExtendModelAt::ArgumentError, "#{value.inspect} is not a valid type, expected #{@columns[key.to_sym][:type]}" if adapter.nil? # We can't adapt the value
|
34
42
|
value = value.send adapter
|
35
43
|
end
|
36
44
|
@value[key.to_s] = value
|
@@ -59,12 +67,13 @@ module ExtendModelAt
|
|
59
67
|
|
60
68
|
# Use the undefined method as a column
|
61
69
|
def method_missing(m, *args, &block)
|
70
|
+
column_name = m.to_s.gsub(/\=$/, '')
|
71
|
+
raise ExtendModelAt::InvalidColumn, "#{column_name} not exist" if @static == true and not (@columns.try(:keys).try(:include?, column_name.to_sym) )
|
62
72
|
# If the method don't finish with "=" is fore read
|
63
73
|
if m !~ /\=$/
|
64
74
|
self[m.to_s]
|
65
75
|
# but if finish with "=" is for wirte
|
66
76
|
else
|
67
|
-
column_name = m.to_s.gsub(/\=$/, '')
|
68
77
|
self[column_name.to_s] = args.first
|
69
78
|
end
|
70
79
|
end
|
@@ -225,7 +234,7 @@ module ExtendModelAt
|
|
225
234
|
:extensible => true # If is false, only the columns defined in :columns can be used
|
226
235
|
}.merge!(opts)
|
227
236
|
columns = initialize_columns expand_options(options, { :not_call_symbol => [:boolean], :not_expand => [:validate, :default] }) if options.kind_of? Hash
|
228
|
-
@extend_at_configuration ||= ExtendModelAt::Extention.new({:model => self, :column_name => column_name.to_sym, :columns => columns})
|
237
|
+
@extend_at_configuration ||= ExtendModelAt::Extention.new({:model => self, :column_name => column_name.to_sym, :columns => columns, :static => options[:static]})
|
229
238
|
end
|
230
239
|
@extend_at_configuration
|
231
240
|
end
|
@@ -239,7 +248,8 @@ module ExtendModelAt
|
|
239
248
|
if validation.kind_of? Symbol
|
240
249
|
self.send validation, eval("@extend_at_configuration.\#\{column.to_s\}", binding)
|
241
250
|
elsif validation.kind_of? Proc
|
242
|
-
|
251
|
+
instance_exec @extend_at_configuration[column.to_sym], &validation
|
252
|
+
# validation.call @extend_at_configuration[column.to_sym]
|
243
253
|
end
|
244
254
|
end
|
245
255
|
end
|
@@ -257,18 +267,18 @@ module ExtendModelAt
|
|
257
267
|
end
|
258
268
|
elsif options[:columns].kind_of? Symbol
|
259
269
|
hash = self.send options[:columns]
|
260
|
-
raise "Invalid columns configuration" if not hash.kind_of? Hash
|
270
|
+
raise ExtendModelAt::ArgumentError, "Invalid columns configuration" if not hash.kind_of? Hash
|
261
271
|
columns = initialize_columns :columns => hash
|
262
272
|
elsif options[:columns].kind_of? Proc
|
263
273
|
hash = options[:columns].call
|
264
|
-
raise "Invalid columns configuration" if not hash.kind_of? Hash
|
274
|
+
raise ExtendModelAt::ArgumentError, "Invalid columns configuration" if not hash.kind_of? Hash
|
265
275
|
columns = initialize_columns :columns => hash
|
266
276
|
end
|
267
277
|
columns
|
268
278
|
end
|
269
279
|
|
270
280
|
def initialize_column(column,config={})
|
271
|
-
raise "The column \#\{column\} have an invalid configuration (\#\{config.class\} => \#\{config\})" if not config.kind_of? Hash
|
281
|
+
raise ExtendModelAt::ArgumentError, "The column \#\{column\} have an invalid configuration (\#\{config.class\} => \#\{config\})" if not config.kind_of? Hash
|
272
282
|
|
273
283
|
@VALID_SYMBOLS ||= [:any, :binary, :boolean, :date, :datetime, :decimal, :float, :integer, :string, :text, :time, :timestamp]
|
274
284
|
|
@@ -284,7 +294,7 @@ module ExtendModelAt
|
|
284
294
|
elsif [Symbol, Proc].include? config[:type]
|
285
295
|
column_config[:type] = get_value_of config[:type]
|
286
296
|
else
|
287
|
-
raise "\#\{config[:type]\} is not a valid column type"
|
297
|
+
raise ExtendModelAt::ArgumentError, "\#\{config[:type]\} is not a valid column type"
|
288
298
|
end
|
289
299
|
|
290
300
|
# Stablish the default value
|
@@ -297,7 +307,7 @@ module ExtendModelAt
|
|
297
307
|
# If the column have a type, we verify the type
|
298
308
|
if not column_config[:type].nil?
|
299
309
|
if not valid_type?(config[:default], column_config[:type])
|
300
|
-
raise "The column \#\{column\} has an invalid default value. Expected \#\{column_config[:type]}, not \#\{config[:default].class}"
|
310
|
+
raise ExtendModelAt::ArgumentError, "The column \#\{column\} has an invalid default value. Expected \#\{column_config[:type]}, not \#\{config[:default].class}"
|
301
311
|
end
|
302
312
|
column_config[:default] = config[:default]
|
303
313
|
else
|
@@ -311,7 +321,7 @@ module ExtendModelAt
|
|
311
321
|
column_config[:validate] = config[:validate]
|
312
322
|
create_validation_for column, config[:validate]
|
313
323
|
elsif not config[:validate].nil?
|
314
|
-
raise "The validation of \#\{column\} is invalid"
|
324
|
+
raise ExtendModelAt::ArgumentError, "The validation of \#\{column\} is invalid"
|
315
325
|
end
|
316
326
|
|
317
327
|
|
data/spec/app/.gitignore
CHANGED
@@ -8,7 +8,7 @@ class Article < ActiveRecord::Base
|
|
8
8
|
:type => :get_int1_type,
|
9
9
|
:default => 1,
|
10
10
|
:validate => lambda do |value|
|
11
|
-
errors.add :extra_int1, "Most by greater than 0" if value <= 0
|
11
|
+
self.errors.add :extra_int1, "Most by greater than 0" if value <= 0
|
12
12
|
end
|
13
13
|
},
|
14
14
|
:int2 => :get_int2_config
|
data/spec/app/app/models/user.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
# SQLite version 3.x
|
2
|
+
# gem install sqlite3
|
3
|
+
#
|
4
|
+
# Ensure the SQLite 3 gem is defined in your Gemfile
|
5
|
+
# gem 'sqlite3'
|
6
|
+
|
7
|
+
# Warning: The database defined as "test" will be erased and
|
8
|
+
# re-generated from your development database when you run "rake".
|
9
|
+
# Do not set this db to the same as development or production.
|
10
|
+
test:
|
11
|
+
adapter: sqlite3
|
12
|
+
database: db/test.sqlite3
|
13
|
+
pool: 5
|
14
|
+
timeout: 5000
|
@@ -3,23 +3,19 @@
|
|
3
3
|
#
|
4
4
|
# Ensure the SQLite 3 gem is defined in your Gemfile
|
5
5
|
# gem 'sqlite3'
|
6
|
-
development:
|
7
|
-
adapter: sqlite3
|
8
|
-
database: db/development.sqlite3
|
9
|
-
pool: 5
|
10
|
-
timeout: 5000
|
11
6
|
|
12
7
|
# Warning: The database defined as "test" will be erased and
|
13
8
|
# re-generated from your development database when you run "rake".
|
14
9
|
# Do not set this db to the same as development or production.
|
15
|
-
|
10
|
+
development:
|
16
11
|
adapter: sqlite3
|
17
|
-
database: db/
|
12
|
+
database: db/development.sqlite3
|
18
13
|
pool: 5
|
19
14
|
timeout: 5000
|
20
15
|
|
21
|
-
|
16
|
+
|
17
|
+
test:
|
22
18
|
adapter: sqlite3
|
23
|
-
database: db/
|
19
|
+
database: db/test.sqlite3
|
24
20
|
pool: 5
|
25
21
|
timeout: 5000
|
File without changes
|
data/spec/extend_at_spec.rb
CHANGED
@@ -56,5 +56,24 @@ describe 'extend_at' do
|
|
56
56
|
article.extra.int2 = 10
|
57
57
|
article.extra.int2.class.should == Fixnum
|
58
58
|
end
|
59
|
+
|
60
|
+
it "should accept validate" do
|
61
|
+
article = Article.new :extra_int1 => -1
|
62
|
+
article.save
|
63
|
+
article.errors.keys.include?(:extra_int1).should == true
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should support static columns" do
|
67
|
+
user = User.new :name => "Account"
|
68
|
+
lambda {user.private_info.etc = "etc"}.should raise_error(ExtendModelAt::InvalidColumn)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "if is't static should support dynamic columns" do
|
72
|
+
article = Article.new
|
73
|
+
lambda {article.extra.etc = "etc"}.should_not raise_error(ExtendModelAt::InvalidColumn)
|
74
|
+
article.save :validate => false
|
75
|
+
article.reload
|
76
|
+
article.extra.etc.should == "etc"
|
77
|
+
end
|
59
78
|
end
|
60
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: extend_at
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &8578760 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *8578760
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &8578000 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '2.5'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *8578000
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec-core
|
38
|
-
requirement: &
|
38
|
+
requirement: &8577360 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *8577360
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: database_cleaner
|
49
|
-
requirement: &
|
49
|
+
requirement: &8576820 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0.7'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *8576820
|
58
58
|
description: ! 'This gem allows you to extend rails models without migrations: This
|
59
59
|
way you can, i.e., develop your own content types, like in Drupal.'
|
60
60
|
email:
|
@@ -65,7 +65,9 @@ extra_rdoc_files: []
|
|
65
65
|
files:
|
66
66
|
- .gitignore
|
67
67
|
- .rspec
|
68
|
+
- .travis.yml
|
68
69
|
- Gemfile
|
70
|
+
- Gemfile.ci
|
69
71
|
- MIT-license.txt
|
70
72
|
- README.markdown
|
71
73
|
- Rakefile
|
@@ -93,7 +95,6 @@ files:
|
|
93
95
|
- lib/generators/extend_at/templates/create_extend_at_tables.rb
|
94
96
|
- spec/app/.gitignore
|
95
97
|
- spec/app/Gemfile
|
96
|
-
- spec/app/Gemfile.lock
|
97
98
|
- spec/app/README
|
98
99
|
- spec/app/Rakefile
|
99
100
|
- spec/app/app/assets/images/rails.png
|
@@ -128,6 +129,7 @@ files:
|
|
128
129
|
- spec/app/config.ru
|
129
130
|
- spec/app/config/application.rb
|
130
131
|
- spec/app/config/boot.rb
|
132
|
+
- spec/app/config/database.sqlite.yml
|
131
133
|
- spec/app/config/database.yml
|
132
134
|
- spec/app/config/environment.rb
|
133
135
|
- spec/app/config/environments/development.rb
|
@@ -146,6 +148,7 @@ files:
|
|
146
148
|
- spec/app/db/migrate/20120110153027_create_extend_at_tables.rb
|
147
149
|
- spec/app/db/schema.rb
|
148
150
|
- spec/app/db/seeds.rb
|
151
|
+
- spec/app/db/test.sqlite3
|
149
152
|
- spec/app/doc/README_FOR_APP
|
150
153
|
- spec/app/lib/assets/.gitkeep
|
151
154
|
- spec/app/lib/tasks/.gitkeep
|
@@ -202,7 +205,6 @@ summary: Create dynamic fields to extend rails models (like content types in Dru
|
|
202
205
|
test_files:
|
203
206
|
- spec/app/.gitignore
|
204
207
|
- spec/app/Gemfile
|
205
|
-
- spec/app/Gemfile.lock
|
206
208
|
- spec/app/README
|
207
209
|
- spec/app/Rakefile
|
208
210
|
- spec/app/app/assets/images/rails.png
|
@@ -237,6 +239,7 @@ test_files:
|
|
237
239
|
- spec/app/config.ru
|
238
240
|
- spec/app/config/application.rb
|
239
241
|
- spec/app/config/boot.rb
|
242
|
+
- spec/app/config/database.sqlite.yml
|
240
243
|
- spec/app/config/database.yml
|
241
244
|
- spec/app/config/environment.rb
|
242
245
|
- spec/app/config/environments/development.rb
|
@@ -255,6 +258,7 @@ test_files:
|
|
255
258
|
- spec/app/db/migrate/20120110153027_create_extend_at_tables.rb
|
256
259
|
- spec/app/db/schema.rb
|
257
260
|
- spec/app/db/seeds.rb
|
261
|
+
- spec/app/db/test.sqlite3
|
258
262
|
- spec/app/doc/README_FOR_APP
|
259
263
|
- spec/app/lib/assets/.gitkeep
|
260
264
|
- spec/app/lib/tasks/.gitkeep
|
data/spec/app/Gemfile.lock
DELETED
@@ -1,136 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ../../
|
3
|
-
specs:
|
4
|
-
extend_at (0.1.4)
|
5
|
-
rails (~> 3.1)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: http://rubygems.org/
|
9
|
-
specs:
|
10
|
-
actionmailer (3.1.3)
|
11
|
-
actionpack (= 3.1.3)
|
12
|
-
mail (~> 2.3.0)
|
13
|
-
actionpack (3.1.3)
|
14
|
-
activemodel (= 3.1.3)
|
15
|
-
activesupport (= 3.1.3)
|
16
|
-
builder (~> 3.0.0)
|
17
|
-
erubis (~> 2.7.0)
|
18
|
-
i18n (~> 0.6)
|
19
|
-
rack (~> 1.3.5)
|
20
|
-
rack-cache (~> 1.1)
|
21
|
-
rack-mount (~> 0.8.2)
|
22
|
-
rack-test (~> 0.6.1)
|
23
|
-
sprockets (~> 2.0.3)
|
24
|
-
activemodel (3.1.3)
|
25
|
-
activesupport (= 3.1.3)
|
26
|
-
builder (~> 3.0.0)
|
27
|
-
i18n (~> 0.6)
|
28
|
-
activerecord (3.1.3)
|
29
|
-
activemodel (= 3.1.3)
|
30
|
-
activesupport (= 3.1.3)
|
31
|
-
arel (~> 2.2.1)
|
32
|
-
tzinfo (~> 0.3.29)
|
33
|
-
activeresource (3.1.3)
|
34
|
-
activemodel (= 3.1.3)
|
35
|
-
activesupport (= 3.1.3)
|
36
|
-
activesupport (3.1.3)
|
37
|
-
multi_json (~> 1.0)
|
38
|
-
ansi (1.4.1)
|
39
|
-
arel (2.2.1)
|
40
|
-
builder (3.0.0)
|
41
|
-
coffee-rails (3.1.1)
|
42
|
-
coffee-script (>= 2.2.0)
|
43
|
-
railties (~> 3.1.0)
|
44
|
-
coffee-script (2.2.0)
|
45
|
-
coffee-script-source
|
46
|
-
execjs
|
47
|
-
coffee-script-source (1.2.0)
|
48
|
-
diff-lcs (1.1.3)
|
49
|
-
erubis (2.7.0)
|
50
|
-
execjs (1.2.13)
|
51
|
-
multi_json (~> 1.0)
|
52
|
-
hike (1.2.1)
|
53
|
-
i18n (0.6.0)
|
54
|
-
jquery-rails (1.0.19)
|
55
|
-
railties (~> 3.0)
|
56
|
-
thor (~> 0.14)
|
57
|
-
json (1.6.4)
|
58
|
-
mail (2.3.0)
|
59
|
-
i18n (>= 0.4.0)
|
60
|
-
mime-types (~> 1.16)
|
61
|
-
treetop (~> 1.4.8)
|
62
|
-
mime-types (1.17.2)
|
63
|
-
multi_json (1.0.4)
|
64
|
-
polyglot (0.3.3)
|
65
|
-
rack (1.3.6)
|
66
|
-
rack-cache (1.1)
|
67
|
-
rack (>= 0.4)
|
68
|
-
rack-mount (0.8.3)
|
69
|
-
rack (>= 1.0.0)
|
70
|
-
rack-ssl (1.3.2)
|
71
|
-
rack
|
72
|
-
rack-test (0.6.1)
|
73
|
-
rack (>= 1.0)
|
74
|
-
rails (3.1.3)
|
75
|
-
actionmailer (= 3.1.3)
|
76
|
-
actionpack (= 3.1.3)
|
77
|
-
activerecord (= 3.1.3)
|
78
|
-
activeresource (= 3.1.3)
|
79
|
-
activesupport (= 3.1.3)
|
80
|
-
bundler (~> 1.0)
|
81
|
-
railties (= 3.1.3)
|
82
|
-
railties (3.1.3)
|
83
|
-
actionpack (= 3.1.3)
|
84
|
-
activesupport (= 3.1.3)
|
85
|
-
rack-ssl (~> 1.3.2)
|
86
|
-
rake (>= 0.8.7)
|
87
|
-
rdoc (~> 3.4)
|
88
|
-
thor (~> 0.14.6)
|
89
|
-
rake (0.9.2.2)
|
90
|
-
rdoc (3.12)
|
91
|
-
json (~> 1.4)
|
92
|
-
rspec (2.8.0)
|
93
|
-
rspec-core (~> 2.8.0)
|
94
|
-
rspec-expectations (~> 2.8.0)
|
95
|
-
rspec-mocks (~> 2.8.0)
|
96
|
-
rspec-core (2.8.0)
|
97
|
-
rspec-expectations (2.8.0)
|
98
|
-
diff-lcs (~> 1.1.2)
|
99
|
-
rspec-mocks (2.8.0)
|
100
|
-
sass (3.1.12)
|
101
|
-
sass-rails (3.1.5)
|
102
|
-
actionpack (~> 3.1.0)
|
103
|
-
railties (~> 3.1.0)
|
104
|
-
sass (~> 3.1.10)
|
105
|
-
tilt (~> 1.3.2)
|
106
|
-
sprockets (2.0.3)
|
107
|
-
hike (~> 1.2)
|
108
|
-
rack (~> 1.0)
|
109
|
-
tilt (~> 1.1, != 1.3.0)
|
110
|
-
sqlite3 (1.3.5)
|
111
|
-
thor (0.14.6)
|
112
|
-
tilt (1.3.3)
|
113
|
-
treetop (1.4.10)
|
114
|
-
polyglot
|
115
|
-
polyglot (>= 0.3.1)
|
116
|
-
turn (0.8.3)
|
117
|
-
ansi
|
118
|
-
tzinfo (0.3.31)
|
119
|
-
uglifier (1.2.1)
|
120
|
-
execjs (>= 0.3.0)
|
121
|
-
multi_json (>= 1.0.2)
|
122
|
-
|
123
|
-
PLATFORMS
|
124
|
-
ruby
|
125
|
-
|
126
|
-
DEPENDENCIES
|
127
|
-
coffee-rails (~> 3.1)
|
128
|
-
extend_at!
|
129
|
-
jquery-rails
|
130
|
-
rails (~> 3.1)
|
131
|
-
rspec
|
132
|
-
rspec-core
|
133
|
-
sass-rails (~> 3.1)
|
134
|
-
sqlite3
|
135
|
-
turn
|
136
|
-
uglifier
|