studio54 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|