restfully 1.0.0.rc1 → 1.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -90,6 +90,10 @@ add the `--record` flag, and at the end of your session the commands you
90
90
  entered will have been written into `SESSION_FILE` (by default:
91
91
  `restfully-tape`).
92
92
 
93
+ Note: depending on your Readline installation, you might see the following
94
+ message: "Bond has detected EditLine and may not work with it. See the
95
+ README's Limitations section". You can safely ignore it.
96
+
93
97
  ### Replay
94
98
 
95
99
  Restfully can replay a sequence of ruby expressions. Just pass the FILE (local
data/bin/restfully CHANGED
@@ -7,6 +7,7 @@ require 'logger'
7
7
  require 'pp'
8
8
  require 'ripl'
9
9
  require 'ripl/multi_line'
10
+ require 'ripl/short_errors'
10
11
 
11
12
  # Behaviour of pp in IRB is different on ruby1.9:
12
13
  # * pp(object) returns object#inspect.
@@ -67,7 +68,6 @@ BANNER
67
68
  end
68
69
  opts.on("--color", "Color output") do |v|
69
70
  require 'ripl/color_streams'
70
- require 'ripl/color_result'
71
71
  end
72
72
  opts.on("--record [SESSION_FILE]", "Record interactive session into SESSION_FILE (default=#{Restfully::DEFAULT_TAPE}), to be replayed later. This option is ignored if FILE is given.") do |v|
73
73
  OPTIONS["record"] = v || Restfully::DEFAULT_TAPE
@@ -104,11 +104,9 @@ BANNER
104
104
  end
105
105
  end.parse!
106
106
 
107
- # Declare original Restfully::Session
108
- @session = Restfully::Session.new(OPTIONS)
109
-
110
107
  if $stdin.tty? && !ARGV[0]
111
108
  # Interactive session
109
+ OPTIONS["shell"] = true
112
110
  puts "Restfully/#{Restfully::VERSION} - The root resource is available in the 'root' variable."
113
111
  if OPTIONS["record"]
114
112
  # Recording requested
@@ -117,7 +115,7 @@ if $stdin.tty? && !ARGV[0]
117
115
  end
118
116
  else
119
117
  # Replayed session
120
- @session.logger.warn "--record option valid only with interactive session. Ignoring." if OPTIONS["record"]
118
+ logger.warn "--record option valid only with interactive session. Ignoring." if OPTIONS["record"]
121
119
  require 'ripl/play'
122
120
 
123
121
  module Ripl::Play
@@ -153,6 +151,9 @@ else
153
151
  Ripl.config[:play] = ARGV[0].dup if ARGV[0]
154
152
  end
155
153
 
154
+ # Declare original Restfully::Session
155
+ SESSION = Restfully::Session.new(OPTIONS)
156
+
156
157
  module Restfully
157
158
  class Session
158
159
  alias :old_initialize :initialize
@@ -160,9 +161,10 @@ module Restfully
160
161
  # scripts, so that they preferably take the configuration given with the
161
162
  # restfully command-line tool.
162
163
  def initialize(options = {}, &block)
164
+ options[:overridden] = true
163
165
  old_opts = Configuration.new(options).expand
164
- new_opts = Configuration.new(OPTIONS).expand
165
- old_initialize(old_opts.merge(new_opts).to_hash, &block)
166
+ new_opts = old_opts.merge(SESSION.config)
167
+ old_initialize(new_opts, &block)
166
168
  end
167
169
  end
168
170
  end
@@ -171,4 +173,4 @@ end
171
173
  at_exit{ @log_file && @log_file.close }
172
174
 
173
175
  ARGV.clear
174
- Ripl.start :binding => @session.instance_eval{ binding }
176
+ Ripl.start :binding => SESSION.sandbox.instance_eval{ binding }
@@ -6,6 +6,17 @@ module Restfully
6
6
 
7
7
  def initialize(opts = {})
8
8
  @options = opts.symbolize_keys
9
+
10
+ @options[:retry_on_error] ||= 5
11
+ @options[:wait_before_retry] ||= 5
12
+ end
13
+
14
+ def logger
15
+ @options[:logger] ||= begin
16
+ l = Logger.new(STDERR)
17
+ l.level = Logger::WARN
18
+ l
19
+ end
9
20
  end
10
21
 
11
22
  def merge(config = {})
@@ -35,6 +46,7 @@ module Restfully
35
46
  if file
36
47
  file = File.expand_path(file)
37
48
  if File.file?(file) && File.readable?(file)
49
+ logger.info "Loading configuration from #{file}..."
38
50
  @options = self.class.load(file).merge(self).options
39
51
  end
40
52
  end
@@ -0,0 +1,16 @@
1
+ require 'forwardable'
2
+
3
+ module Restfully
4
+ class Sandbox
5
+ extend Forwardable
6
+
7
+ def_delegators :@session, :head, :get, :post, :put, :delete, :root, :logger
8
+
9
+ attr_reader :session
10
+
11
+ def initialize(session)
12
+ @session = session
13
+ end
14
+
15
+ end
16
+ end
@@ -7,21 +7,17 @@ require 'restclient/components'
7
7
  require 'rack/cache'
8
8
  require 'addressable/uri'
9
9
 
10
+ require 'restfully/sandbox'
11
+
10
12
  module Restfully
11
13
  class Session
12
14
 
13
-
14
- attr_writer :logger
15
15
  attr_accessor :uri
16
16
  attr_reader :config
17
17
  attr_writer :default_headers
18
18
 
19
19
  def logger
20
- @logger ||= begin
21
- l = Logger.new(STDERR)
22
- l.level = Logger::INFO
23
- l
24
- end
20
+ @config.logger
25
21
  end
26
22
 
27
23
  # Builds a new client session.
@@ -46,28 +42,40 @@ module Restfully
46
42
  # ) {|root, session| p root}
47
43
  #
48
44
  def initialize(options = {})
49
- @config = Configuration.new(options).expand
50
- @logger = @config.delete(:logger)
45
+ @config = if options.kind_of?(Configuration)
46
+ options
47
+ else
48
+ Configuration.new(options).expand
49
+ end
51
50
 
52
- @config[:retry_on_error] ||= 5
53
- @config[:wait_before_retry] ||= 5
51
+ setup
54
52
 
53
+ yield root, self if block_given?
54
+ end
55
+
56
+ def setup
55
57
  # Compatibility with :base_uri parameter of Restfully <= 0.6
56
- @uri = @config.delete(:uri) || @config.delete(:base_uri)
57
- if @uri.nil? || @uri.empty?
58
- raise ArgumentError, "You must pass a :uri option."
58
+ @uri = config[:uri] || config[:base_uri]
59
+ msg = if @uri.nil? || @uri.empty?
60
+ @uri = Restfully::DEFAULT_URI
61
+ "No URI given. Using #{@uri}"
59
62
  else
60
- @uri = Addressable::URI.parse(@uri)
63
+ "Base URI changed to: #{@uri}"
64
+ end
65
+ if config[:overridden] || @uri == Restfully::DEFAULT_URI
66
+ config[:shell] ? puts(msg) : logger.warn(msg)
61
67
  end
62
68
 
63
- default_headers.merge!(@config.delete(:default_headers) || {})
69
+ @uri = Addressable::URI.parse(@uri)
70
+
71
+ default_headers.merge!(config[:default_headers] || {})
64
72
 
65
73
  disable RestClient::Rack::Compatibility
66
- authenticate(@config)
67
- setup_cache(@config.delete(:cache))
74
+ authenticate(config)
75
+ setup_cache(config[:cache])
68
76
 
69
77
  # Require additional types (e.g.: media-types):
70
- (@config[:require] || []).each do |r|
78
+ (config[:require] || []).each do |r|
71
79
  logger.info "Requiring #{r}..."
72
80
  if ::File.exist?(file=File.expand_path(r))
73
81
  require file
@@ -86,8 +94,6 @@ module Restfully
86
94
  require "restfully/media_type/#{r.underscore}"
87
95
  end
88
96
  end
89
-
90
- yield root, self if block_given?
91
97
  end
92
98
 
93
99
  # Enable a RestClient Rack component.
@@ -136,10 +142,11 @@ module Restfully
136
142
  def root
137
143
  get(uri.path).load
138
144
  end
139
-
140
- # Returns self.
141
- def session
142
- self
145
+
146
+ # Return a sandbox object, useful to execute code within the current
147
+ # session context witout polluting the Session object.
148
+ def sandbox
149
+ Sandbox.new(self)
143
150
  end
144
151
 
145
152
  # Returns an HTTP::Response object or raise a Restfully::HTTP::Error
@@ -1,3 +1,3 @@
1
1
  module Restfully
2
- VERSION = "1.0.0.rc1"
2
+ VERSION = "1.0.0.rc2"
3
3
  end
data/lib/restfully.rb CHANGED
@@ -14,6 +14,7 @@ require 'restfully/media_type'
14
14
 
15
15
  module Restfully
16
16
  DEFAULT_TAPE = "restfully-tape"
17
+ DEFAULT_URI = "http://localhost:4567"
17
18
  # Include the default media-types
18
19
  MediaType.reset
19
20
  end
@@ -4,37 +4,38 @@ describe Restfully::Configuration do
4
4
 
5
5
  before do
6
6
  @config_file = File.expand_path("../../fixtures/config.yml", __FILE__)
7
- @expected_merge = {
8
- :require=>["ApplicationVndBonfireXml", "something"],
9
- :username=>"crohr",
10
- :gateway=>"ssh.bonfire.grid5000.fr",
7
+ @defaults = {
8
+ :retry_on_error=>5, :wait_before_retry=>5
9
+ }
10
+ @expected_config_from_file = {
11
+ :require=>["ApplicationVndBonfireXml"],
12
+ :username=>"someone",
11
13
  :uri=>"https://api.bonfire-project.eu/",
12
- :password=>"p4ssw0rd"
14
+ :password=>"p4ssw0rd",
15
+ :gateway=>"ssh.bonfire.grid5000.fr"
13
16
  }
17
+ @expected_merge = @expected_config_from_file.merge(@defaults).merge({
18
+ :username=>"crohr",
19
+ :require=>["ApplicationVndBonfireXml", "something"],
20
+ })
14
21
  end
15
22
 
16
23
  it "should take a hash and store it with symbolized keys" do
17
24
  config = Restfully::Configuration.new("a" => 1, :b => "hello", "c" => [1,2,3])
18
- config.options.should == {:a=>1, :b=>"hello", :c=>[1, 2, 3]}
25
+ config.options.should == {:a=>1, :b=>"hello", :c=>[1, 2, 3]}.merge(@defaults)
19
26
  end
20
27
 
21
28
  it "should correctly load a configuration file" do
22
29
  config = Restfully::Configuration.load(@config_file)
23
- config.options.should == {
24
- :require=>["ApplicationVndBonfireXml"],
25
- :username=>"someone",
26
- :uri=>"https://api.bonfire-project.eu/",
27
- :password=>"p4ssw0rd",
28
- :gateway=>"ssh.bonfire.grid5000.fr"
29
- }
30
+ config.options.should == @expected_config_from_file.merge(@defaults)
30
31
  end
31
32
 
32
33
  it "should correctly overwrite the options defined in the configuration file with other options given on initialization" do
33
34
  config = Restfully::Configuration.new(:username => "crohr", :require => ['something'], :configuration_file => @config_file)
34
35
  config.expand
35
- config.options.should == @expected_merge.merge(
36
+ config.options.should include(@expected_merge.merge(
36
37
  :configuration_file=>@config_file
37
- )
38
+ ))
38
39
  end
39
40
 
40
41
  it "should correctly merge two configs" do
@@ -16,13 +16,12 @@ describe Restfully::Session do
16
16
  session = Restfully::Session.new(@config.merge("key" => "value"))
17
17
  session.logger.should == @logger
18
18
  session.uri.should == Addressable::URI.parse(@uri)
19
- session.config.to_hash.should == {:wait_before_retry=>5, :key=>"value", :retry_on_error=>5}
19
+ session.config.to_hash.values_at(:wait_before_retry, :key, :retry_on_error).should == [5, "value", 5]
20
20
  end
21
21
 
22
- it "should raise an error if no URI given" do
23
- lambda{
24
- Restfully::Session.new(@config.merge(:uri => ""))
25
- }.should raise_error(ArgumentError)
22
+ it "should set a default URI if no URI given" do
23
+ session = Restfully::Session.new(@config.merge(:uri => ""))
24
+ session.uri.to_s.should == Restfully::DEFAULT_URI
26
25
  end
27
26
 
28
27
  it "should add or replace additional headers to the default set" do
@@ -69,9 +68,11 @@ describe Restfully::Session do
69
68
  session.root.should == res
70
69
  end
71
70
 
72
- it "should return itself when calling #session" do
71
+ it "should return a sanbox" do
73
72
  session = Restfully::Session.new(@config)
74
- session.session.should == session
73
+ sandbox = session.sandbox
74
+ sandbox.session.should == session
75
+ sandbox.logger.should == session.logger
75
76
  end
76
77
 
77
78
  it "should fetch the root path [URI path present]" do
metadata CHANGED
@@ -1,202 +1,279 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: restfully
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15424049
5
5
  prerelease: 6
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ - rc
11
+ - 2
12
+ version: 1.0.0.rc2
6
13
  platform: ruby
7
- authors:
14
+ authors:
8
15
  - Cyril Rohr
9
16
  autorequire:
10
17
  bindir: bin
11
18
  cert_chain: []
12
- date: 2011-11-04 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
19
+
20
+ date: 2011-11-04 00:00:00 +01:00
21
+ default_executable:
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
15
24
  name: json
16
- requirement: &2152514160 !ruby/object:Gem::Requirement
25
+ prerelease: false
26
+ requirement: &id001 !ruby/object:Gem::Requirement
17
27
  none: false
18
- requirements:
28
+ requirements:
19
29
  - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '1.5'
30
+ - !ruby/object:Gem::Version
31
+ hash: 5
32
+ segments:
33
+ - 1
34
+ - 5
35
+ version: "1.5"
22
36
  type: :runtime
23
- prerelease: false
24
- version_requirements: *2152514160
25
- - !ruby/object:Gem::Dependency
37
+ version_requirements: *id001
38
+ - !ruby/object:Gem::Dependency
26
39
  name: rest-client
27
- requirement: &2152511640 !ruby/object:Gem::Requirement
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
28
42
  none: false
29
- requirements:
43
+ requirements:
30
44
  - - ~>
31
- - !ruby/object:Gem::Version
32
- version: '1.6'
45
+ - !ruby/object:Gem::Version
46
+ hash: 3
47
+ segments:
48
+ - 1
49
+ - 6
50
+ version: "1.6"
33
51
  type: :runtime
34
- prerelease: false
35
- version_requirements: *2152511640
36
- - !ruby/object:Gem::Dependency
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
37
54
  name: rest-client-components
38
- requirement: &2152510880 !ruby/object:Gem::Requirement
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
39
57
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
64
+ version: "0"
44
65
  type: :runtime
45
- prerelease: false
46
- version_requirements: *2152510880
47
- - !ruby/object:Gem::Dependency
66
+ version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
48
68
  name: rack-cache
49
- requirement: &2152509540 !ruby/object:Gem::Requirement
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
50
71
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 0
78
+ version: "0"
55
79
  type: :runtime
56
- prerelease: false
57
- version_requirements: *2152509540
58
- - !ruby/object:Gem::Dependency
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
59
82
  name: backports
60
- requirement: &2152508000 !ruby/object:Gem::Requirement
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
61
85
  none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
65
- version: '0'
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 3
90
+ segments:
91
+ - 0
92
+ version: "0"
66
93
  type: :runtime
67
- prerelease: false
68
- version_requirements: *2152508000
69
- - !ruby/object:Gem::Dependency
94
+ version_requirements: *id005
95
+ - !ruby/object:Gem::Dependency
70
96
  name: addressable
71
- requirement: &2152506760 !ruby/object:Gem::Requirement
97
+ prerelease: false
98
+ requirement: &id006 !ruby/object:Gem::Requirement
72
99
  none: false
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
76
- version: '0'
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ hash: 3
104
+ segments:
105
+ - 0
106
+ version: "0"
77
107
  type: :runtime
78
- prerelease: false
79
- version_requirements: *2152506760
80
- - !ruby/object:Gem::Dependency
108
+ version_requirements: *id006
109
+ - !ruby/object:Gem::Dependency
81
110
  name: ripl
82
- requirement: &2152505220 !ruby/object:Gem::Requirement
111
+ prerelease: false
112
+ requirement: &id007 !ruby/object:Gem::Requirement
83
113
  none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ hash: 3
118
+ segments:
119
+ - 0
120
+ version: "0"
88
121
  type: :runtime
89
- prerelease: false
90
- version_requirements: *2152505220
91
- - !ruby/object:Gem::Dependency
122
+ version_requirements: *id007
123
+ - !ruby/object:Gem::Dependency
92
124
  name: ripl-multi_line
93
- requirement: &2152504360 !ruby/object:Gem::Requirement
125
+ prerelease: false
126
+ requirement: &id008 !ruby/object:Gem::Requirement
94
127
  none: false
95
- requirements:
96
- - - ! '>='
97
- - !ruby/object:Gem::Version
98
- version: '0'
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ hash: 3
132
+ segments:
133
+ - 0
134
+ version: "0"
99
135
  type: :runtime
100
- prerelease: false
101
- version_requirements: *2152504360
102
- - !ruby/object:Gem::Dependency
136
+ version_requirements: *id008
137
+ - !ruby/object:Gem::Dependency
103
138
  name: ripl-color_streams
104
- requirement: &2152503480 !ruby/object:Gem::Requirement
139
+ prerelease: false
140
+ requirement: &id009 !ruby/object:Gem::Requirement
105
141
  none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ hash: 3
146
+ segments:
147
+ - 0
148
+ version: "0"
110
149
  type: :runtime
150
+ version_requirements: *id009
151
+ - !ruby/object:Gem::Dependency
152
+ name: ripl-short_errors
111
153
  prerelease: false
112
- version_requirements: *2152503480
113
- - !ruby/object:Gem::Dependency
154
+ requirement: &id010 !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ hash: 3
160
+ segments:
161
+ - 0
162
+ version: "0"
163
+ type: :runtime
164
+ version_requirements: *id010
165
+ - !ruby/object:Gem::Dependency
114
166
  name: ripl-play
115
- requirement: &2152502240 !ruby/object:Gem::Requirement
167
+ prerelease: false
168
+ requirement: &id011 !ruby/object:Gem::Requirement
116
169
  none: false
117
- requirements:
170
+ requirements:
118
171
  - - ~>
119
- - !ruby/object:Gem::Version
172
+ - !ruby/object:Gem::Version
173
+ hash: 21
174
+ segments:
175
+ - 0
176
+ - 2
177
+ - 1
120
178
  version: 0.2.1
121
179
  type: :runtime
122
- prerelease: false
123
- version_requirements: *2152502240
124
- - !ruby/object:Gem::Dependency
180
+ version_requirements: *id011
181
+ - !ruby/object:Gem::Dependency
125
182
  name: rb-readline
126
- requirement: &2152501420 !ruby/object:Gem::Requirement
183
+ prerelease: false
184
+ requirement: &id012 !ruby/object:Gem::Requirement
127
185
  none: false
128
- requirements:
129
- - - ! '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ hash: 3
190
+ segments:
191
+ - 0
192
+ version: "0"
132
193
  type: :runtime
133
- prerelease: false
134
- version_requirements: *2152501420
135
- - !ruby/object:Gem::Dependency
194
+ version_requirements: *id012
195
+ - !ruby/object:Gem::Dependency
136
196
  name: rake
137
- requirement: &2152500480 !ruby/object:Gem::Requirement
197
+ prerelease: false
198
+ requirement: &id013 !ruby/object:Gem::Requirement
138
199
  none: false
139
- requirements:
200
+ requirements:
140
201
  - - ~>
141
- - !ruby/object:Gem::Version
142
- version: '0.8'
202
+ - !ruby/object:Gem::Version
203
+ hash: 27
204
+ segments:
205
+ - 0
206
+ - 8
207
+ version: "0.8"
143
208
  type: :development
144
- prerelease: false
145
- version_requirements: *2152500480
146
- - !ruby/object:Gem::Dependency
209
+ version_requirements: *id013
210
+ - !ruby/object:Gem::Dependency
147
211
  name: rspec
148
- requirement: &2152499460 !ruby/object:Gem::Requirement
212
+ prerelease: false
213
+ requirement: &id014 !ruby/object:Gem::Requirement
149
214
  none: false
150
- requirements:
215
+ requirements:
151
216
  - - ~>
152
- - !ruby/object:Gem::Version
153
- version: '2'
217
+ - !ruby/object:Gem::Version
218
+ hash: 7
219
+ segments:
220
+ - 2
221
+ version: "2"
154
222
  type: :development
155
- prerelease: false
156
- version_requirements: *2152499460
157
- - !ruby/object:Gem::Dependency
223
+ version_requirements: *id014
224
+ - !ruby/object:Gem::Dependency
158
225
  name: webmock
159
- requirement: &2152498720 !ruby/object:Gem::Requirement
226
+ prerelease: false
227
+ requirement: &id015 !ruby/object:Gem::Requirement
160
228
  none: false
161
- requirements:
162
- - - ! '>='
163
- - !ruby/object:Gem::Version
164
- version: '0'
229
+ requirements:
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ hash: 3
233
+ segments:
234
+ - 0
235
+ version: "0"
165
236
  type: :development
166
- prerelease: false
167
- version_requirements: *2152498720
168
- - !ruby/object:Gem::Dependency
237
+ version_requirements: *id015
238
+ - !ruby/object:Gem::Dependency
169
239
  name: autotest
170
- requirement: &2152497620 !ruby/object:Gem::Requirement
240
+ prerelease: false
241
+ requirement: &id016 !ruby/object:Gem::Requirement
171
242
  none: false
172
- requirements:
173
- - - ! '>='
174
- - !ruby/object:Gem::Version
175
- version: '0'
243
+ requirements:
244
+ - - ">="
245
+ - !ruby/object:Gem::Version
246
+ hash: 3
247
+ segments:
248
+ - 0
249
+ version: "0"
176
250
  type: :development
177
- prerelease: false
178
- version_requirements: *2152497620
179
- - !ruby/object:Gem::Dependency
251
+ version_requirements: *id016
252
+ - !ruby/object:Gem::Dependency
180
253
  name: autotest-growl
181
- requirement: &2152495520 !ruby/object:Gem::Requirement
254
+ prerelease: false
255
+ requirement: &id017 !ruby/object:Gem::Requirement
182
256
  none: false
183
- requirements:
184
- - - ! '>='
185
- - !ruby/object:Gem::Version
186
- version: '0'
257
+ requirements:
258
+ - - ">="
259
+ - !ruby/object:Gem::Version
260
+ hash: 3
261
+ segments:
262
+ - 0
263
+ version: "0"
187
264
  type: :development
188
- prerelease: false
189
- version_requirements: *2152495520
265
+ version_requirements: *id017
190
266
  description: Consume RESTful APIs effortlessly
191
- email:
267
+ email:
192
268
  - cyril.rohr@gmail.com
193
- executables:
269
+ executables:
194
270
  - restfully
195
271
  extensions: []
196
- extra_rdoc_files:
272
+
273
+ extra_rdoc_files:
197
274
  - LICENSE
198
275
  - README.md
199
- files:
276
+ files:
200
277
  - bin/restfully
201
278
  - lib/restfully/collection.rb
202
279
  - lib/restfully/configuration.rb
@@ -217,6 +294,7 @@ files:
217
294
  - lib/restfully/rack/basic_auth.rb
218
295
  - lib/restfully/rack.rb
219
296
  - lib/restfully/resource.rb
297
+ - lib/restfully/sandbox.rb
220
298
  - lib/restfully/session.rb
221
299
  - lib/restfully/version.rb
222
300
  - lib/restfully.rb
@@ -247,32 +325,43 @@ files:
247
325
  - Rakefile
248
326
  - LICENSE
249
327
  - README.md
328
+ has_rdoc: true
250
329
  homepage: http://github.com/crohr/restfully
251
330
  licenses: []
331
+
252
332
  post_install_message:
253
- rdoc_options:
333
+ rdoc_options:
254
334
  - --charset=UTF-8
255
- require_paths:
335
+ require_paths:
256
336
  - lib
257
- required_ruby_version: !ruby/object:Gem::Requirement
337
+ required_ruby_version: !ruby/object:Gem::Requirement
258
338
  none: false
259
- requirements:
260
- - - ! '>='
261
- - !ruby/object:Gem::Version
262
- version: '1.8'
263
- required_rubygems_version: !ruby/object:Gem::Requirement
339
+ requirements:
340
+ - - ">="
341
+ - !ruby/object:Gem::Version
342
+ hash: 31
343
+ segments:
344
+ - 1
345
+ - 8
346
+ version: "1.8"
347
+ required_rubygems_version: !ruby/object:Gem::Requirement
264
348
  none: false
265
- requirements:
266
- - - ! '>='
267
- - !ruby/object:Gem::Version
268
- version: '1.3'
349
+ requirements:
350
+ - - ">="
351
+ - !ruby/object:Gem::Version
352
+ hash: 9
353
+ segments:
354
+ - 1
355
+ - 3
356
+ version: "1.3"
269
357
  requirements: []
358
+
270
359
  rubyforge_project:
271
- rubygems_version: 1.8.11
360
+ rubygems_version: 1.6.2
272
361
  signing_key:
273
362
  specification_version: 3
274
363
  summary: Consume RESTful APIs effortlessly
275
- test_files:
364
+ test_files:
276
365
  - spec/fixtures/bonfire-collection-with-fragments.xml
277
366
  - spec/fixtures/bonfire-compute-existing.xml
278
367
  - spec/fixtures/bonfire-empty-collection.xml