studio54 0.0.5
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/Gemfile +31 -0
- data/Gemfile.lock +68 -0
- data/LICENSE +25 -0
- data/README.md +0 -0
- data/Rakefile +56 -0
- data/VERSION +5 -0
- data/app/controllers/users_controller.rb +29 -0
- data/app/models/post.rb +4 -0
- data/app/models/user.rb +46 -0
- data/bare/Gemfile +31 -0
- data/bare/Rakefile +28 -0
- data/bare/config.ru +9 -0
- data/bare/config/app_tie.rb +12 -0
- data/bare/config/db.rb +20 -0
- data/bare/config/db_connect.rb +19 -0
- data/bare/config/environment.rb +17 -0
- data/bare/config/sinatra.rb +36 -0
- data/bare/config/studio54_tie.rb +2 -0
- data/bare/dance.rb +11 -0
- data/bare/lib/after_filters.rb +7 -0
- data/bare/lib/before_filters.rb +7 -0
- data/bare/lib/helpers.rb +5 -0
- data/bare/public/index.rhtml +1 -0
- data/bare/public/layout.rhtml +12 -0
- data/bare/static/css/base.css +86 -0
- data/bare/static/css/yui_reset.css +30 -0
- data/bare/test/helpers.rb +8 -0
- data/bare/test/suite.rb +13 -0
- data/bin/studio54 +65 -0
- data/config.ru +9 -0
- data/config/app_tie.rb +8 -0
- data/config/db.rb +20 -0
- data/config/db_connect.rb +19 -0
- data/config/environment.rb +17 -0
- data/config/sinatra.rb +36 -0
- data/dance.rb +80 -0
- data/ideas +0 -0
- data/lib/after_filters.rb +7 -0
- data/lib/base.rb +29 -0
- data/lib/before_filters.rb +30 -0
- data/lib/helpers.rb +24 -0
- data/lib/lazy_controller.rb +87 -0
- data/lib/lazy_record.rb +395 -0
- data/lib/partials.rb +19 -0
- data/lib/studio54.rb +14 -0
- data/lib/vendor.rb +23 -0
- data/public/_partial_test.rhtml +4 -0
- data/public/all.rhtml +7 -0
- data/public/form.rhtml +11 -0
- data/public/index.rhtml +6 -0
- data/public/layout.rhtml +15 -0
- data/public/partial_test.rhtml +6 -0
- data/public/test_find_by.rhtml +4 -0
- data/rack/cache/body/ec/b48431757330e446c58d88e317574ef0eca2e9 +0 -0
- data/rack/cache/meta/25/3a7a342a66b79119b7b8cb34bda89978f9e606 +0 -0
- data/rack/cache/meta/c1/34c9b7112c7d884220d6ee9a8e43ec69d2ea6e +0 -0
- data/static/css/base.css +86 -0
- data/static/css/yui_reset.css +30 -0
- data/static/hello.html +1 -0
- data/studio54.gemspec +25 -0
- data/tags +149 -0
- data/test/email.rb +8 -0
- data/test/environment.rb +28 -0
- data/test/helpers.rb +8 -0
- data/test/integration/index_test.rb +41 -0
- data/test/integration/partial_test.rb +50 -0
- data/test/mail/email_test.rb +14 -0
- data/test/rack/helpers.rb +23 -0
- data/test/suite.rb +8 -0
- data/test/unit/associations_test.rb +33 -0
- data/test/unit/callbacks_test.rb +16 -0
- data/test/unit/database_test.rb +73 -0
- data/test/unit/model_introspection_test.rb +44 -0
- data/test/unit/serialization_test.rb +19 -0
- data/test/unit/validations_test.rb +73 -0
- metadata +165 -0
data/test/helpers.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
class IndexPageTest < MiniTest::Unit::TestCase
|
2
|
+
include Rack::Test::Methods
|
3
|
+
include Studio54
|
4
|
+
|
5
|
+
def app
|
6
|
+
Dancefloor.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_callbacks_working
|
10
|
+
get '/'
|
11
|
+
var = nil
|
12
|
+
Base.app_instance.instance_eval do
|
13
|
+
var = @second_user
|
14
|
+
end
|
15
|
+
assert_equal 'me', var
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_index_response
|
19
|
+
get '/'
|
20
|
+
app = Base.app_instance
|
21
|
+
body = nil
|
22
|
+
app.instance_eval do
|
23
|
+
body = erb :index
|
24
|
+
end
|
25
|
+
assert_equal body, last_response.body
|
26
|
+
assert_equal true, last_response.ok?
|
27
|
+
assert_equal true, last_response.html?
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_flash_is_set
|
31
|
+
get '/'
|
32
|
+
app = Base.app_instance
|
33
|
+
flashy = nil
|
34
|
+
app.instance_eval do
|
35
|
+
flashy = flash[:notice]
|
36
|
+
end
|
37
|
+
assert_equal('hi', flashy)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
class PartialTest < MiniTest::Unit::TestCase
|
2
|
+
include Rack::Test::Methods
|
3
|
+
include Studio54
|
4
|
+
|
5
|
+
def app
|
6
|
+
Dancefloor.new
|
7
|
+
end
|
8
|
+
|
9
|
+
FULL_RENDERING = <<HTML
|
10
|
+
<html>
|
11
|
+
<head>
|
12
|
+
<!--
|
13
|
+
-<link rel="stylesheet" type="text/css" href="/css/yui_reset.css" />
|
14
|
+
-<link rel="stylesheet" type="text/css" href="/css/base.css" />
|
15
|
+
-->
|
16
|
+
</head>
|
17
|
+
<body>
|
18
|
+
<title>Site</title>
|
19
|
+
<div id="container">
|
20
|
+
<h1>Partial Test</h1>
|
21
|
+
<p>I am 1 years old</p>
|
22
|
+
<p>I am 2 years old</p>
|
23
|
+
<p>I am 3 years old</p>
|
24
|
+
<p>I am 4 years old</p>
|
25
|
+
<p>I am 5 years old</p>
|
26
|
+
<p>I am 6 years old</p>
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
</div>
|
31
|
+
</body>
|
32
|
+
</html>
|
33
|
+
|
34
|
+
HTML
|
35
|
+
|
36
|
+
def test_partial_rendered
|
37
|
+
get '/partial'
|
38
|
+
app = Base.app_instance
|
39
|
+
body = ""
|
40
|
+
app.instance_eval do
|
41
|
+
body += erb :partial_test
|
42
|
+
end
|
43
|
+
assert_equal body, last_response.body
|
44
|
+
assert_equal true, last_response.ok?
|
45
|
+
assert_equal true, last_response.html?
|
46
|
+
assert_equal FULL_RENDERING, body
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Rack
|
2
|
+
class MockResponse
|
3
|
+
|
4
|
+
# these methods are defined by Sinatra, but just
|
5
|
+
# in case...
|
6
|
+
def content_length
|
7
|
+
self["Content-Length"]
|
8
|
+
end unless method_defined? :content_length
|
9
|
+
|
10
|
+
def content_type
|
11
|
+
self["Content-Type"]
|
12
|
+
end unless method_defined? :content_type
|
13
|
+
|
14
|
+
# Not a good method, but probably good enough...
|
15
|
+
def html?
|
16
|
+
body = Array.wrap(self.body)
|
17
|
+
content_type =~ %r{text/html} and
|
18
|
+
body.detect {|e| e =~ %r{<\w>} || e =~ %r{<br}}.present?
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
data/test/suite.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
class AssociationTest < MiniTest::Unit::TestCase
|
2
|
+
include Rack::Test::Methods
|
3
|
+
include ::Studio54
|
4
|
+
|
5
|
+
::NewKlass = Class.new(LazyRecord)
|
6
|
+
|
7
|
+
def app
|
8
|
+
Dancefloor.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_has_many_without_reciprocation
|
12
|
+
Post.tap do |p|
|
13
|
+
assert_raises(LazyRecord::AssociationNotFound) do
|
14
|
+
p.class_eval do
|
15
|
+
has_many :users
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_reciprocal_association
|
22
|
+
Post.tap do |p|
|
23
|
+
p.class_eval { belongs_to :users, :new_klass }
|
24
|
+
assert_equal [:users, :new_klass].map(&:to_s), p.belongs_to_attributes
|
25
|
+
end
|
26
|
+
User.tap do |u|
|
27
|
+
u.class_eval { has_many :posts }
|
28
|
+
assert_equal [:posts].map(&:to_s), u.nested_attributes
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CallbackTest < MiniTest::Unit::TestCase
|
2
|
+
include Rack::Test::Methods
|
3
|
+
include ::Studio54
|
4
|
+
|
5
|
+
def app
|
6
|
+
Dancefloor.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_single_simple_callback
|
10
|
+
u = User.new
|
11
|
+
quaff = u.drink
|
12
|
+
assert_equal 21, u.age
|
13
|
+
assert_equal "mmm", quaff
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1,73 @@
|
|
1
|
+
class DatabaseTest < MiniTest::Unit::TestCase
|
2
|
+
include Rack::Test::Methods
|
3
|
+
include ::Studio54
|
4
|
+
|
5
|
+
def app
|
6
|
+
Dancefloor.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_empty_resultset
|
10
|
+
empty_results = []
|
11
|
+
assert_raises(LazyRecord::RecordNotFound) do
|
12
|
+
User.class_eval do
|
13
|
+
test_resultset empty_results
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_non_empty_results
|
19
|
+
non_empty_results = [1,2,3]
|
20
|
+
ret = nil
|
21
|
+
User.class_eval do
|
22
|
+
ret = test_resultset non_empty_results
|
23
|
+
end
|
24
|
+
assert_nil ret
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_invalid_save
|
28
|
+
u = User.new
|
29
|
+
assert_nil u.save
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_simple_id_find
|
33
|
+
@user = User.find(1)
|
34
|
+
assert_equal User, @user.class
|
35
|
+
assert_equal 1, @user.id.to_i
|
36
|
+
assert_equal 'luke', @user.name
|
37
|
+
assert_equal 22, @user.age.to_i
|
38
|
+
end
|
39
|
+
|
40
|
+
# need to fix find_by to take into account ORs with the same
|
41
|
+
# field name, and a mixture of ANDs and ORs, need a composites
|
42
|
+
# hash with a length equal to the sum of the previous arguments
|
43
|
+
def test_find_by_conjunction_AND
|
44
|
+
@users = User.find_by :name => 'david', :age => 44
|
45
|
+
assert_equal 2, @users.count
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_find_by_conjunction_OR
|
49
|
+
@users = User.find_by({:name => 'luke', :age => 44}, :conjunction => "OR")
|
50
|
+
assert_equal 6, @users.count
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_dynamic_find
|
54
|
+
@user = User.find_by_name 'rick'
|
55
|
+
assert_equal 13, @user.id.to_i
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_build_user_from_params
|
59
|
+
params = {:user => {:name => 'luke', :age => '22'}}
|
60
|
+
@user = User.new params[:user]
|
61
|
+
assert_equal 'luke', @user.name
|
62
|
+
assert_equal '22', @user.age
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_find_all_from_tbl
|
66
|
+
@users = User.all
|
67
|
+
sql = "SELECT * FROM users;"
|
68
|
+
res = Db.conn.execute(sql)
|
69
|
+
assert_equal res.count, @users.count
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
class ModelIntrospectionTest < MiniTest::Unit::TestCase
|
2
|
+
include Rack::Test::Methods
|
3
|
+
include ::Studio54
|
4
|
+
|
5
|
+
def app
|
6
|
+
Dancefloor.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_tbl_attribute_introspection
|
10
|
+
assert_equal :id.to_s, User.primary_key
|
11
|
+
assert_equal [:name, :age].map(&:to_s), User.attributes
|
12
|
+
assert_equal [:id, :name, :age].map(&:to_s), User.all_attributes
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_default_tbl_name
|
16
|
+
assert_equal 'posts', Post.table_name
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_custom_tbl_name
|
20
|
+
User.class_eval do
|
21
|
+
self.assoc_table_name = 'special_users'
|
22
|
+
end
|
23
|
+
assert_equal 'special_users', User.table_name
|
24
|
+
# and change back so unordered tests don't break
|
25
|
+
User.class_eval do
|
26
|
+
self.assoc_table_name = 'users'
|
27
|
+
end
|
28
|
+
assert_equal 'users', User.table_name
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_composite_primary_key
|
32
|
+
Post.class_eval do
|
33
|
+
attr_primary :id, :user_id
|
34
|
+
end
|
35
|
+
assert_equal [:id, :user_id].map(&:to_s), Post.primary_key
|
36
|
+
# and change back so unordered tests don't break
|
37
|
+
Post.class_eval do
|
38
|
+
attr_primary nil
|
39
|
+
end
|
40
|
+
assert_equal nil, Post.primary_key
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class SerializeTest < MiniTest::Unit::TestCase
|
2
|
+
include Rack::Test::Methods
|
3
|
+
include ::Studio54
|
4
|
+
|
5
|
+
def app
|
6
|
+
Dancefloor.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_json_rendering
|
10
|
+
@user = User.find(1)
|
11
|
+
assert_equal "{\"user\":{\"age\":\"22\",\"id\":\"1\",\"name\":\"luke\"}}", @user.to_json
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_xml_rendering
|
15
|
+
@user = User.find(1)
|
16
|
+
assert_equal "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <id>1</id>\n <name>luke</name>\n <age>22</age>\n</user>\n", @user.to_xml
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
@@ -0,0 +1,73 @@
|
|
1
|
+
class ValidationTest < MiniTest::Unit::TestCase
|
2
|
+
include Rack::Test::Methods
|
3
|
+
include ::Studio54
|
4
|
+
|
5
|
+
def app
|
6
|
+
Dancefloor.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_blank_user
|
10
|
+
u = User.new
|
11
|
+
u.name = ""
|
12
|
+
assert_equal false, u.valid?
|
13
|
+
assert_equal 5, u.errors.count
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_young_user
|
17
|
+
u = User.new
|
18
|
+
# should be > 18
|
19
|
+
u.age = 17
|
20
|
+
u.name = "Katelin"
|
21
|
+
u.humor = true
|
22
|
+
assert_equal false, u.valid?
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_short_named_user
|
26
|
+
u = User.new
|
27
|
+
u.age = 29
|
28
|
+
u.name = "jon"
|
29
|
+
u.humor = true
|
30
|
+
assert_equal false, u.valid?
|
31
|
+
assert_equal ["is too short"], u.errors[:name]
|
32
|
+
assert_equal ["Name is too short"], u.errors.full_messages
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_valid_user
|
36
|
+
u = User.new
|
37
|
+
u.age = 19
|
38
|
+
u.name = "Andrew Dice Clay"
|
39
|
+
u.humor = true
|
40
|
+
assert_equal true, u.valid?
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_presence_validation
|
44
|
+
u = User.new
|
45
|
+
u.age = 25
|
46
|
+
u.name = "Mel Brooks"
|
47
|
+
assert_equal false, u.valid?
|
48
|
+
assert_equal ["can't be blank"] , u.errors[:humor]
|
49
|
+
assert_equal ["Humor can't be blank"], u.errors.full_messages
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_numericality_of_age
|
53
|
+
u = User.new
|
54
|
+
u.age = 100
|
55
|
+
u.name = "Shania Twain"
|
56
|
+
u.humor = true
|
57
|
+
assert_equal false, u.valid?
|
58
|
+
assert_equal 1, u.errors.count
|
59
|
+
assert_equal ["must be less than 99"], u.errors[:age]
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_format_email
|
63
|
+
u = User.new
|
64
|
+
u.age = 30
|
65
|
+
u.name = "jack gonzo"
|
66
|
+
u.humor = true
|
67
|
+
u.email = "SPAM"
|
68
|
+
assert_equal false, u.valid?
|
69
|
+
assert_equal 1, u.errors.count
|
70
|
+
assert_equal ["is invalid"], u.errors[:email]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
metadata
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: studio54
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.5
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Luke Gruber
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-11-06 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rack
|
16
|
+
requirement: &84870790 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *84870790
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rack-cache
|
27
|
+
requirement: &84870070 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *84870070
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rack-flash
|
38
|
+
requirement: &84869710 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *84869710
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: sinatra
|
49
|
+
requirement: &84869290 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *84869290
|
58
|
+
description: Sinatra meets rails, falls in love, and dances through the night.
|
59
|
+
email: luke.gru@gmail.com
|
60
|
+
executables:
|
61
|
+
- studio54
|
62
|
+
extensions: []
|
63
|
+
extra_rdoc_files: []
|
64
|
+
files:
|
65
|
+
- dance.rb
|
66
|
+
- config/sinatra.rb
|
67
|
+
- config/db.rb
|
68
|
+
- config/db_connect.rb
|
69
|
+
- config/app_tie.rb
|
70
|
+
- config/environment.rb
|
71
|
+
- Gemfile.lock
|
72
|
+
- tags
|
73
|
+
- Rakefile
|
74
|
+
- rack/cache/meta/25/3a7a342a66b79119b7b8cb34bda89978f9e606
|
75
|
+
- rack/cache/meta/c1/34c9b7112c7d884220d6ee9a8e43ec69d2ea6e
|
76
|
+
- rack/cache/body/ec/b48431757330e446c58d88e317574ef0eca2e9
|
77
|
+
- bare/dance.rb
|
78
|
+
- bare/config/sinatra.rb
|
79
|
+
- bare/config/db.rb
|
80
|
+
- bare/config/studio54_tie.rb
|
81
|
+
- bare/config/db_connect.rb
|
82
|
+
- bare/config/app_tie.rb
|
83
|
+
- bare/config/environment.rb
|
84
|
+
- bare/Rakefile
|
85
|
+
- bare/lib/after_filters.rb
|
86
|
+
- bare/lib/before_filters.rb
|
87
|
+
- bare/lib/helpers.rb
|
88
|
+
- bare/test/helpers.rb
|
89
|
+
- bare/test/suite.rb
|
90
|
+
- bare/Gemfile
|
91
|
+
- bare/public/index.rhtml
|
92
|
+
- bare/public/layout.rhtml
|
93
|
+
- bare/static/css/base.css
|
94
|
+
- bare/static/css/yui_reset.css
|
95
|
+
- bare/config.ru
|
96
|
+
- README.md
|
97
|
+
- lib/lazy_controller.rb
|
98
|
+
- lib/after_filters.rb
|
99
|
+
- lib/lazy_record.rb
|
100
|
+
- lib/before_filters.rb
|
101
|
+
- lib/helpers.rb
|
102
|
+
- lib/base.rb
|
103
|
+
- lib/studio54.rb
|
104
|
+
- lib/partials.rb
|
105
|
+
- lib/vendor.rb
|
106
|
+
- ideas
|
107
|
+
- VERSION
|
108
|
+
- app/controllers/users_controller.rb
|
109
|
+
- app/models/user.rb
|
110
|
+
- app/models/post.rb
|
111
|
+
- studio54.gemspec
|
112
|
+
- bin/studio54
|
113
|
+
- LICENSE
|
114
|
+
- test/rack/helpers.rb
|
115
|
+
- test/unit/model_introspection_test.rb
|
116
|
+
- test/unit/associations_test.rb
|
117
|
+
- test/unit/callbacks_test.rb
|
118
|
+
- test/unit/serialization_test.rb
|
119
|
+
- test/unit/validations_test.rb
|
120
|
+
- test/unit/database_test.rb
|
121
|
+
- test/helpers.rb
|
122
|
+
- test/mail/email_test.rb
|
123
|
+
- test/suite.rb
|
124
|
+
- test/email.rb
|
125
|
+
- test/integration/partial_test.rb
|
126
|
+
- test/integration/index_test.rb
|
127
|
+
- test/environment.rb
|
128
|
+
- Gemfile
|
129
|
+
- public/index.rhtml
|
130
|
+
- public/layout.rhtml
|
131
|
+
- public/test_find_by.rhtml
|
132
|
+
- public/_partial_test.rhtml
|
133
|
+
- public/form.rhtml
|
134
|
+
- public/partial_test.rhtml
|
135
|
+
- public/all.rhtml
|
136
|
+
- static/hello.html
|
137
|
+
- static/css/base.css
|
138
|
+
- static/css/yui_reset.css
|
139
|
+
- config.ru
|
140
|
+
homepage:
|
141
|
+
licenses:
|
142
|
+
- MIT
|
143
|
+
post_install_message:
|
144
|
+
rdoc_options: []
|
145
|
+
require_paths:
|
146
|
+
- lib
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
149
|
+
requirements:
|
150
|
+
- - ! '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 1.9.1
|
153
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
requirements: []
|
160
|
+
rubyforge_project:
|
161
|
+
rubygems_version: 1.8.10
|
162
|
+
signing_key:
|
163
|
+
specification_version: 3
|
164
|
+
summary: Sinatra meets rails, falls in love, and dances through the night.
|
165
|
+
test_files: []
|