extend_at 0.1.5 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://secure.travis-ci.org/anga/extend_at.png)](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
|