rack-api 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-api (1.0.0)
4
+ rack-api (1.0.1)
5
5
  activesupport (>= 3.0.0)
6
6
  rack (>= 1.0.0)
7
7
  rack-mount (>= 0.6.0)
data/README.rdoc CHANGED
@@ -24,11 +24,51 @@ Create web app APIs that respond to one or more formats using an elegant DSL.
24
24
  end
25
25
  end
26
26
 
27
+ === Starting a server with Rack
28
+
29
+ To run Rack::API through Rack (`config.ru`), you just need to provide your class. If
30
+ you're using the DSL format, you need to provide the Rack::API class.
31
+
32
+ require "rack/api"
33
+ run Rack::API
34
+
35
+ Otherwise, just provide your custom class.
36
+
37
+ require "rack/api"
38
+
39
+ class MyApp < Rack::API
40
+ get "/" do
41
+ {:message => "Hello World"}
42
+ end
43
+ end
44
+
45
+ run MyApp
46
+
47
+ Now, you can execute `rackup` and your app will be available through the 9292 port.
48
+
49
+ $ rackup -p 3000
50
+ [2011-08-05 20:38:11] INFO WEBrick 1.3.1
51
+ [2011-08-05 20:38:11] INFO ruby 1.9.3 (2011-07-31) [x86_64-darwin11.0.0]
52
+ [2011-08-05 20:38:11] INFO WEBrick::HTTPServer#start: pid=95318 port=3000
53
+
54
+ $ curl localhost:3000
55
+ {"message" => "Hello World"}
56
+
57
+ You can also run other application servers that recognize Rack, like Thin.
58
+
59
+ $ thin -R config.ru start
60
+ >> Thin web server (v1.2.11 codename Bat-Shit Crazy)
61
+ >> Maximum connections set to 1024
62
+ >> Listening on 0.0.0.0:3000, CTRL+C to stop
63
+
64
+ $ curl localhost:9292
65
+ {"message" => "Hello World"}
66
+
27
67
  === Rails Integration
28
68
 
29
69
  First, set up your Gemfile like this:
30
70
 
31
- gem "rack-api", "~> 0.1.0", :require => "rack/api"
71
+ gem "rack-api", "~> 1.0", :require => "rack/api"
32
72
 
33
73
  Create your API somewhere. In this example, we'll add it to <tt>lib/api.rb</tt>.
34
74
 
@@ -0,0 +1,14 @@
1
+ $:.push(File.dirname(__FILE__) + "/../lib")
2
+
3
+ # Just run `ruby examples/basic_auth.rb` and then use something like
4
+ # `curl -u admin:test http://localhost:2345/api/v1/`.
5
+
6
+ require "rack/api"
7
+
8
+ class Sample < Rack::API
9
+ get "/" do
10
+ {:message => "Hello World, from Rack!"}
11
+ end
12
+ end
13
+
14
+ run Sample
@@ -6,6 +6,7 @@ module Rack
6
6
  DELEGATE_METHODS = %w[
7
7
  version use prefix basic_auth rescue_from
8
8
  helper respond_to default_url_options
9
+ get post put delete head
9
10
  ]
10
11
 
11
12
  attr_accessor :settings
@@ -3,7 +3,7 @@ module Rack
3
3
  module Version
4
4
  MAJOR = 1
5
5
  MINOR = 0
6
- PATCH = 0
6
+ PATCH = 1
7
7
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
8
8
  end
9
9
  end
@@ -10,4 +10,9 @@ describe Rack::API, "delegators" do
10
10
  it { should respond_to(:helper) }
11
11
  it { should respond_to(:default_url_options) }
12
12
  it { should respond_to(:rescue_from) }
13
+ it { should respond_to(:get) }
14
+ it { should respond_to(:post) }
15
+ it { should respond_to(:put) }
16
+ it { should respond_to(:delete) }
17
+ it { should respond_to(:head) }
13
18
  end
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  describe Rack::API::Runner do
4
4
  specify "sanity check for delegate methods" do
5
5
  # remember to update spec/method_delegation_spec.rb
6
- Rack::API::Runner::DELEGATE_METHODS.size.should == 8
6
+ Rack::API::Runner::DELEGATE_METHODS.size.should == 13
7
7
  end
8
8
 
9
9
  it "responds to http methods" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-08-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
- requirement: &70155088054880 !ruby/object:Gem::Requirement
16
+ requirement: &70310986093920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70155088054880
24
+ version_requirements: *70310986093920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rack-mount
27
- requirement: &70155088053900 !ruby/object:Gem::Requirement
27
+ requirement: &70310986093020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70155088053900
35
+ version_requirements: *70310986093020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &70155088053320 !ruby/object:Gem::Requirement
38
+ requirement: &70310986092500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.0.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70155088053320
46
+ version_requirements: *70310986092500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70155088052440 !ruby/object:Gem::Requirement
49
+ requirement: &70310986107140 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '2.6'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70155088052440
57
+ version_requirements: *70310986107140
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rack-test
60
- requirement: &70155088067720 !ruby/object:Gem::Requirement
60
+ requirement: &70310986106240 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.5.7
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70155088067720
68
+ version_requirements: *70310986106240
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: redis
71
- requirement: &70155088067220 !ruby/object:Gem::Requirement
71
+ requirement: &70310986105420 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 2.2.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70155088067220
79
+ version_requirements: *70310986105420
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rake
82
- requirement: &70155088066500 !ruby/object:Gem::Requirement
82
+ requirement: &70310986104560 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0.9'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70155088066500
90
+ version_requirements: *70310986104560
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: ruby-debug19
93
- requirement: &70155088065780 !ruby/object:Gem::Requirement
93
+ requirement: &70310986103800 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70155088065780
101
+ version_requirements: *70310986103800
102
102
  description: Create web app APIs that respond to one or more formats using an elegant
103
103
  DSL.
104
104
  email:
@@ -114,6 +114,7 @@ files:
114
114
  - README.rdoc
115
115
  - Rakefile
116
116
  - examples/basic_auth.rb
117
+ - examples/config.ru
117
118
  - examples/controller.rb
118
119
  - examples/custom_class.rb
119
120
  - examples/custom_format.rb
@@ -178,7 +179,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
178
179
  version: '0'
179
180
  segments:
180
181
  - 0
181
- hash: -3523925321348313927
182
+ hash: 2596341377563388583
182
183
  required_rubygems_version: !ruby/object:Gem::Requirement
183
184
  none: false
184
185
  requirements:
@@ -187,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
188
  version: '0'
188
189
  segments:
189
190
  - 0
190
- hash: -3523925321348313927
191
+ hash: 2596341377563388583
191
192
  requirements: []
192
193
  rubyforge_project:
193
194
  rubygems_version: 1.8.6