rest-core 3.6.0 → 4.0.0

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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -0
  3. data/.travis.yml +0 -1
  4. data/CHANGES.md +28 -0
  5. data/Gemfile +0 -2
  6. data/README.md +14 -95
  7. data/Rakefile +16 -3
  8. data/example/simple.rb +1 -0
  9. data/example/use-cases.rb +15 -3
  10. data/lib/rest-core.rb +38 -75
  11. data/lib/rest-core/client/universal.rb +3 -1
  12. data/lib/rest-core/client_oauth1.rb +64 -59
  13. data/lib/rest-core/event.rb +9 -11
  14. data/lib/rest-core/middleware/auth_basic.rb +21 -21
  15. data/lib/rest-core/middleware/bypass.rb +8 -8
  16. data/lib/rest-core/middleware/cache.rb +94 -90
  17. data/lib/rest-core/middleware/clash_response.rb +15 -14
  18. data/lib/rest-core/middleware/common_logger.rb +27 -26
  19. data/lib/rest-core/middleware/default_headers.rb +8 -8
  20. data/lib/rest-core/middleware/default_payload.rb +8 -8
  21. data/lib/rest-core/middleware/default_query.rb +8 -8
  22. data/lib/rest-core/middleware/default_site.rb +12 -12
  23. data/lib/rest-core/middleware/defaults.rb +38 -38
  24. data/lib/rest-core/middleware/error_detector.rb +10 -10
  25. data/lib/rest-core/middleware/error_detector_http.rb +6 -4
  26. data/lib/rest-core/middleware/error_handler.rb +14 -14
  27. data/lib/rest-core/middleware/follow_redirect.rb +28 -27
  28. data/lib/rest-core/middleware/json_request.rb +13 -11
  29. data/lib/rest-core/middleware/json_response.rb +29 -28
  30. data/lib/rest-core/middleware/oauth1_header.rb +84 -83
  31. data/lib/rest-core/middleware/oauth2_header.rb +27 -25
  32. data/lib/rest-core/middleware/oauth2_query.rb +15 -15
  33. data/lib/rest-core/middleware/query_response.rb +14 -14
  34. data/lib/rest-core/middleware/retry.rb +25 -23
  35. data/lib/rest-core/middleware/smash_response.rb +15 -14
  36. data/lib/rest-core/middleware/timeout.rb +18 -19
  37. data/lib/rest-core/test.rb +1 -18
  38. data/lib/rest-core/util/clash.rb +38 -37
  39. data/lib/rest-core/util/config.rb +40 -39
  40. data/lib/rest-core/util/dalli_extension.rb +11 -10
  41. data/lib/rest-core/util/hmac.rb +9 -8
  42. data/lib/rest-core/util/json.rb +55 -54
  43. data/lib/rest-core/util/parse_link.rb +13 -12
  44. data/lib/rest-core/util/parse_query.rb +24 -22
  45. data/lib/rest-core/version.rb +1 -1
  46. data/rest-core.gemspec +121 -158
  47. data/test/test_cache.rb +2 -0
  48. data/test/test_default_payload.rb +1 -1
  49. data/test/test_error_handler.rb +5 -4
  50. data/test/test_timeout.rb +9 -8
  51. data/test/test_universal.rb +8 -0
  52. metadata +9 -73
  53. data/lib/rest-core/builder.rb +0 -162
  54. data/lib/rest-core/client.rb +0 -277
  55. data/lib/rest-core/client/simple.rb +0 -2
  56. data/lib/rest-core/engine.rb +0 -36
  57. data/lib/rest-core/engine/dry.rb +0 -9
  58. data/lib/rest-core/engine/http-client.rb +0 -41
  59. data/lib/rest-core/error.rb +0 -5
  60. data/lib/rest-core/event_source.rb +0 -137
  61. data/lib/rest-core/middleware.rb +0 -151
  62. data/lib/rest-core/promise.rb +0 -249
  63. data/lib/rest-core/thread_pool.rb +0 -131
  64. data/lib/rest-core/timer.rb +0 -58
  65. data/lib/rest-core/util/payload.rb +0 -173
  66. data/test/test_builder.rb +0 -40
  67. data/test/test_client.rb +0 -177
  68. data/test/test_event_source.rb +0 -159
  69. data/test/test_future.rb +0 -16
  70. data/test/test_httpclient.rb +0 -118
  71. data/test/test_payload.rb +0 -204
  72. data/test/test_promise.rb +0 -146
  73. data/test/test_simple.rb +0 -38
  74. data/test/test_thread_pool.rb +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e2e3b27d9cdd63bf53ffecbe03691cd958f57da
4
- data.tar.gz: 1c9a5d20dd052ee3ab3888d6a495ce13cfbc94ed
3
+ metadata.gz: 457863f961696936393b0a9cdfece4b4d2316b3c
4
+ data.tar.gz: 6c4c5f3ae1079f425fd463fb617fab97c3641237
5
5
  SHA512:
6
- metadata.gz: fcc573e74f35f9f8baacc09ce81f76111ad91b35b8bccd2f344203efee0a27e589e9c67322252287d55f768b0465fadd0146256dec3a92213f1b951a621f0c8c
7
- data.tar.gz: 12741fd1e4bff91d66226c86867be01ae0d9004cf85142fd28a38da12245bcb9a29840943c54b3d06c221e688c2ddd990574ecc92f28372fc2040a9e40718177
6
+ metadata.gz: 05f689fdc1a13a629fc2f82190bae7804533fd06cc2c3c5f625f666e695541a826717ead8f97de5a2fdb4834b2f1a55deec798a45ed407e00e13531c348ef1ca
7
+ data.tar.gz: 3906077d07d6ed8a64782ca78278adbd2a152b71420ad956248def24ed53554751d8e7e84231d8f36549f23cf8672463ba906bde39ba299b41bcc125badebfa8
@@ -1,3 +1,6 @@
1
1
  [submodule "task"]
2
2
  path = task
3
3
  url = git://github.com/godfat/gemgem.git
4
+ [submodule "rest-builder"]
5
+ path = rest-builder
6
+ url = git://github.com/godfat/rest-builder.git
@@ -1,7 +1,6 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.1
5
4
  - 2.2
6
5
  - 2.3.0
7
6
  - rbx
data/CHANGES.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # CHANGES
2
2
 
3
+ ## rest-core 4.0.0 -- 2016-02-04
4
+
5
+ Now the core functionality was extracted to a new gem, rest-builder.
6
+ rest-core from now on would just bundle middleware and some utilities.
7
+ Things like `RC::Builder` should still work for the sake of compatibility,
8
+ but it's actually `RestBuilder::Builder` underneath. Note that the core
9
+ concurrency facility was extracted to another new gem, promise_pool.
10
+ Since some parts were also rewritten, things might change somehow.
11
+ At least no public APIs were changed. It's completely compatible.
12
+
13
+ ### Incompatible changes
14
+
15
+ * `RC::Simple` was removed. There's no point for that.
16
+ * `RC.id` was removed, in favour of `:itself.to_proc`.
17
+ * Include `RC::Middleware` would no longer include `RC` as well.
18
+
19
+ ### Enhancements
20
+
21
+ * We no longer `autoload` a lot of stuffs, rather, we just load it.
22
+ * Previously, only when you try to _peek_ the future, the callback would be
23
+ called. From now on, whenever the request is done, it would call the
24
+ callback regardless. However, if there's an exception, it won't be raised.
25
+ It would only raise whenever you _peek_ it. An obvious difference for this
26
+ is the `RC::CommonLogger`. Previously since callback would only be called
27
+ when you _peek_ it, the time would be the difference from request done to
28
+ you _peeked_ it. From now on, it would just be how much time the request
29
+ has been taken, regardless when you _peek_ it.
30
+
3
31
  ## rest-core 3.6.0 -- 2016-01-27
4
32
 
5
33
  ### Incompatible changes
data/Gemfile CHANGED
@@ -3,8 +3,6 @@ source 'https://rubygems.org/'
3
3
 
4
4
  gemspec
5
5
 
6
- gem 'rest-client'
7
-
8
6
  gem 'rake'
9
7
  gem 'pork'
10
8
  gem 'muack'
data/README.md CHANGED
@@ -21,22 +21,18 @@ talk is in Mandarin. There's another talk about [The Promise of rest-core][]
21
21
 
22
22
  ## DESCRIPTION:
23
23
 
24
- Modular Ruby clients interface for REST APIs.
24
+ Various [rest-builder](https://github.com/godfat/rest-builder) middleware
25
+ for building REST clients.
25
26
 
26
- There has been an explosion in the number of REST APIs available today.
27
- To address the need for a way to access these APIs easily and elegantly,
28
- we have developed rest-core, which consists of composable middleware
29
- that allows you to build a REST client for any REST API. Or in the case of
30
- common APIs such as Facebook, Github, and Twitter, you can simply use the
31
- dedicated clients provided by [rest-more][].
32
-
33
- [rest-more]: https://github.com/godfat/rest-more
27
+ Checkout [rest-more](https://github.com/godfat/rest-more) for pre-built
28
+ clients.
34
29
 
35
30
  ## FEATURES:
36
31
 
37
- * Modular interface for REST clients similar to WSGI/Rack for servers.
32
+ * Modular interface for REST clients similar to WSGI/Rack for servers
33
+ via [rest-builder][].
38
34
  * Concurrent requests with synchronous or asynchronous interfaces with
39
- threads.
35
+ threads via [promise_pool][].
40
36
 
41
37
  ## WHY?
42
38
 
@@ -48,13 +44,17 @@ less memory, less conflicts, and run faster.
48
44
  ### Mandatory:
49
45
 
50
46
  * Tested with MRI (official CRuby), Rubinius and JRuby.
47
+ * gem [rest-builder][]
48
+ * gem [promise_pool][]
49
+ * gem [timers][]
51
50
  * gem [httpclient][]
52
51
  * gem [mime-types][]
53
- * gem [timers][]
54
52
 
53
+ [rest-builder]: https://github.com/godfat/rest-builder
54
+ [promise_pool]: https://github.com/godfat/promise_pool
55
+ [timers]: https://github.com/celluloid/timers
55
56
  [httpclient]: https://github.com/nahi/httpclient
56
57
  [mime-types]: https://github.com/halostatue/mime-types
57
- [timers]: https://github.com/celluloid/timers
58
58
 
59
59
  ### Optional:
60
60
 
@@ -553,88 +553,6 @@ simply ignore `:expires_in`.
553
553
  [RC::Timeout]: lib/rest-core/middleware/timeout.rb
554
554
  [moneta]: https://github.com/minad/moneta#expiration
555
555
 
556
- ## Build Your Own Middleware:
557
-
558
- ### How We Pick the Default Value:
559
-
560
- There are a number of ways to specify a default value, each with different
561
- priorities. Suppose we have a middleware which remembers an integer:
562
-
563
- ``` ruby
564
- class HP
565
- def self.members; [:hp]; end
566
- include RC::Middleware
567
- def call env, &k
568
- puts "HP: #{hp(env)}"
569
- app.call(env, &k)
570
- end
571
- end
572
- Mage = RC::Builder.client do
573
- use HP, 5 # the very last default
574
- end
575
- mage = Mage.new
576
- ```
577
-
578
- 1. The one passed to the request directly gets the first priority, e.g.
579
-
580
- ``` ruby
581
- mage.get('http://example.com/', {}, :hp => 1) # prints HP: 1
582
- ```
583
-
584
- 2. The one saved as an instance variable in the client gets the 2nd place.
585
-
586
- ``` ruby
587
- mage.hp = 2
588
- mage.get('http://example.com/') # prints HP: 2
589
- mage.get('http://example.com/', {}, :hp => 1) # prints HP: 1
590
- mage.hp # still 2
591
- mage.hp = false # disable hp
592
- mage.hp = nil # reset to default
593
- ```
594
-
595
- 3. The method defined in the client instance named `default_hp` gets the 3rd.
596
-
597
- ``` ruby
598
- class Mage
599
- def default_hp
600
- 3
601
- end
602
- end
603
- mage.get('http://example.com/') # prints HP: 3
604
- mage.hp # 3
605
- mage.hp = nil # reset default
606
- Mage.send(:remove_method, :default_hp)
607
- ```
608
-
609
- 4. The method defined in the client class named `default_hp` gets the 4rd.
610
- P.S. In [rest-more][], with `RestCore::Config` it would generate a
611
- `DefaultAttributes` module which defines this kind of default method and
612
- then is extended into the client class. You could still define this method
613
- to override the default though.
614
-
615
- ``` ruby
616
- class Mage
617
- def self.default_hp
618
- 4
619
- end
620
- end
621
- mage.get('http://example.com/') # prints HP: 4
622
- mage.hp # 4
623
- mage.hp = nil # reset to default
624
- Mage.singleton_class.send(:remove_method, :default_hp)
625
- ```
626
-
627
- 5. The one defined in the middleware gets the last place.
628
-
629
- ``` ruby
630
- mage.get('http://example.com/') # prints HP: 5
631
- mage.hp # 5
632
- mage.hp = nil # reset to default
633
- ```
634
-
635
- You can find all the details in client.rb and middleware.rb. See the
636
- included method hooks.
637
-
638
556
  ## Advanced Concurrent HTTP Requests -- Embrace the Future
639
557
 
640
558
  ### The Interface
@@ -773,6 +691,7 @@ the priority here is:
773
691
 
774
692
  * [Codementor](https://www.codementor.io/)
775
693
  * [PicCollage](http://pic-collage.com/)
694
+ * [GW2 Account Viewer](https://www.godfat.org/gw2)
776
695
 
777
696
  ## CHANGES:
778
697
 
data/Rakefile CHANGED
@@ -2,14 +2,27 @@
2
2
  begin
3
3
  require "#{dir = File.dirname(__FILE__)}/task/gemgem"
4
4
  rescue LoadError
5
- sh 'git submodule update --init'
5
+ sh 'git submodule update --init --recursive'
6
6
  exec Gem.ruby, '-S', $PROGRAM_NAME, *ARGV
7
7
  end
8
8
 
9
+ $LOAD_PATH.unshift(File.expand_path("#{dir}/rest-builder/lib"))
10
+ $LOAD_PATH.unshift(File.expand_path("#{dir}/rest-builder/promise_pool/lib"))
11
+
9
12
  Gemgem.init(dir) do |s|
10
13
  require 'rest-core/version'
11
14
  s.name = 'rest-core'
12
15
  s.version = RestCore::VERSION
13
- %w[httpclient mime-types].each{ |g| s.add_runtime_dependency(g) }
14
- s.add_runtime_dependency('timers', '>=4.0.1')
16
+ %w[rest-builder].each do |g|
17
+ s.add_runtime_dependency(g)
18
+ end
19
+
20
+ # exclude rest-builder
21
+ s.files.reject!{ |f| f.start_with?('rest-builder/') }
22
+ end
23
+
24
+ desc 'Run console'
25
+ task 'console' do
26
+ ARGV.shift
27
+ load `which rib`.chomp
15
28
  end
@@ -5,6 +5,7 @@ YourClient = RC::Builder.client do
5
5
  use RC::DefaultSite , 'https://api.github.com/users/'
6
6
  use RC::JsonResponse, true
7
7
  use RC::CommonLogger, method(:puts)
8
+ use RC::Timeout , 10
8
9
  use RC::Cache , nil, 3600
9
10
  end
10
11
 
@@ -4,6 +4,16 @@ RC.eagerload
4
4
 
5
5
  RC::Universal.pool_size = 0 # default to no thread pool
6
6
 
7
+ RC::Universal.module_eval do
8
+ def default_query
9
+ {:access_token => ENV['FACEBOOK_ACCESS_TOKEN']}
10
+ end
11
+
12
+ def default_timeout
13
+ 10
14
+ end
15
+ end
16
+
7
17
  def def_use_case name, &block
8
18
  singleton_class.send(:define_method, "#{name}_") do
9
19
  begin
@@ -23,8 +33,10 @@ def def_use_case name, &block
23
33
  end
24
34
  end
25
35
 
36
+ @mutex = Mutex.new
37
+
26
38
  def q str
27
- Thread.exclusive{ puts "\e[33m=> #{str.inspect}\e[0m" }
39
+ @mutex.synchronize{ puts "\e[33m=> #{str.inspect}\e[0m" }
28
40
  end
29
41
 
30
42
  # ----------------------------------------------------------------------
@@ -49,7 +61,7 @@ def_use_case 'pure_ruby_callback_requests' do
49
61
  RC::Universal.new(:json_response => true ,
50
62
  :site => 'https://graph.facebook.com/' ,
51
63
  :log_method => lambda{|str|
52
- Thread.exclusive{puts(str)}}).
64
+ @mutex.synchronize{puts(str)}}).
53
65
  get('4'){ |res|
54
66
  if res.kind_of?(Exception)
55
67
  q "Encountering: #{res}"
@@ -70,7 +82,7 @@ def_use_case 'pure_ruby_nested_concurrent_requests' do
70
82
  c = RC::Universal.new(:json_response => true ,
71
83
  :site => 'https://graph.facebook.com/' ,
72
84
  :log_method => lambda{ |str|
73
- Thread.exclusive{puts(str)}})
85
+ @mutex.synchronize{puts(str)}})
74
86
 
75
87
  %w[4 5].each{ |user|
76
88
  c.get(user, :fields => 'cover'){ |data|
@@ -1,84 +1,52 @@
1
1
 
2
- module RestCore
3
- REQUEST_METHOD = 'REQUEST_METHOD'
4
- REQUEST_PATH = 'REQUEST_PATH'
5
- REQUEST_QUERY = 'REQUEST_QUERY'
6
- REQUEST_PAYLOAD = 'REQUEST_PAYLOAD'
7
- REQUEST_HEADERS = 'REQUEST_HEADERS'
8
- REQUEST_URI = 'REQUEST_URI'
9
-
10
- RESPONSE_BODY = 'RESPONSE_BODY'
11
- RESPONSE_STATUS = 'RESPONSE_STATUS'
12
- RESPONSE_HEADERS = 'RESPONSE_HEADERS'
13
- RESPONSE_SOCKET = 'RESPONSE_SOCKET'
14
- RESPONSE_KEY = 'RESPONSE_KEY'
15
-
16
- DRY = 'core.dry'
17
- FAIL = 'core.fail'
18
- LOG = 'core.log'
19
- CLIENT = 'core.client'
2
+ require 'rest-builder'
20
3
 
21
- ASYNC = 'async.callback'
22
- TIMER = 'async.timer'
23
- PROMISE = 'async.promise'
24
- HIJACK = 'async.hijack'
25
-
26
- # core utilities
27
- autoload :Builder , 'rest-core/builder'
28
- autoload :Client , 'rest-core/client'
29
- autoload :Error , 'rest-core/error'
30
- autoload :Event , 'rest-core/event'
31
- autoload :Middleware , 'rest-core/middleware'
32
- autoload :Promise , 'rest-core/promise'
33
- autoload :ThreadPool , 'rest-core/thread_pool'
34
- autoload :EventSource , 'rest-core/event_source'
4
+ module RestCore
5
+ # for backward compatibility
6
+ RestBuilder.constants.each do |const|
7
+ const_set(const, RestBuilder.const_get(const))
8
+ end
35
9
 
36
10
  # oauth1 utilities
37
- autoload :ClientOauth1 , 'rest-core/client_oauth1'
11
+ autoload :ClientOauth1 , 'rest-core/client_oauth1'
38
12
 
39
13
  # misc utilities
40
- autoload :Hmac , 'rest-core/util/hmac'
41
- autoload :Json , 'rest-core/util/json'
42
- autoload :ParseLink , 'rest-core/util/parse_link'
43
- autoload :ParseQuery , 'rest-core/util/parse_query'
44
- autoload :Payload , 'rest-core/util/payload'
45
- autoload :Config , 'rest-core/util/config'
46
- autoload :Clash , 'rest-core/util/clash'
47
- autoload :Smash , 'rest-core/util/smash'
48
- autoload :DalliExtension, 'rest-core/util/dalli_extension'
14
+ autoload :Hmac , 'rest-core/util/hmac'
15
+ autoload :Json , 'rest-core/util/json'
16
+ autoload :ParseLink , 'rest-core/util/parse_link'
17
+ autoload :ParseQuery , 'rest-core/util/parse_query'
18
+ autoload :Config , 'rest-core/util/config'
19
+ autoload :Clash , 'rest-core/util/clash'
20
+ autoload :Smash , 'rest-core/util/smash'
21
+ autoload :DalliExtension , 'rest-core/util/dalli_extension'
49
22
 
50
23
  # middlewares
51
- autoload :AuthBasic , 'rest-core/middleware/auth_basic'
52
- autoload :Bypass , 'rest-core/middleware/bypass'
53
- autoload :Cache , 'rest-core/middleware/cache'
54
- autoload :ClashResponse , 'rest-core/middleware/clash_response'
55
- autoload :SmashResponse , 'rest-core/middleware/smash_response'
56
- autoload :CommonLogger , 'rest-core/middleware/common_logger'
57
- autoload :DefaultHeaders, 'rest-core/middleware/default_headers'
58
- autoload :DefaultQuery , 'rest-core/middleware/default_query'
59
- autoload :DefaultPayload, 'rest-core/middleware/default_payload'
60
- autoload :DefaultSite , 'rest-core/middleware/default_site'
61
- autoload :Defaults , 'rest-core/middleware/defaults'
62
- autoload :ErrorDetector , 'rest-core/middleware/error_detector'
24
+ autoload :AuthBasic , 'rest-core/middleware/auth_basic'
25
+ autoload :Bypass , 'rest-core/middleware/bypass'
26
+ autoload :Cache , 'rest-core/middleware/cache'
27
+ autoload :ClashResponse , 'rest-core/middleware/clash_response'
28
+ autoload :SmashResponse , 'rest-core/middleware/smash_response'
29
+ autoload :CommonLogger , 'rest-core/middleware/common_logger'
30
+ autoload :DefaultHeaders , 'rest-core/middleware/default_headers'
31
+ autoload :DefaultQuery , 'rest-core/middleware/default_query'
32
+ autoload :DefaultPayload , 'rest-core/middleware/default_payload'
33
+ autoload :DefaultSite , 'rest-core/middleware/default_site'
34
+ autoload :Defaults , 'rest-core/middleware/defaults'
35
+ autoload :ErrorDetector , 'rest-core/middleware/error_detector'
63
36
  autoload :ErrorDetectorHttp, 'rest-core/middleware/error_detector_http'
64
- autoload :ErrorHandler , 'rest-core/middleware/error_handler'
65
- autoload :FollowRedirect, 'rest-core/middleware/follow_redirect'
66
- autoload :JsonRequest , 'rest-core/middleware/json_request'
67
- autoload :JsonResponse , 'rest-core/middleware/json_response'
68
- autoload :QueryResponse , 'rest-core/middleware/query_response'
69
- autoload :Oauth1Header , 'rest-core/middleware/oauth1_header'
70
- autoload :Oauth2Header , 'rest-core/middleware/oauth2_header'
71
- autoload :Oauth2Query , 'rest-core/middleware/oauth2_query'
72
- autoload :Retry , 'rest-core/middleware/retry'
73
- autoload :Timeout , 'rest-core/middleware/timeout'
74
-
75
- # engines
76
- autoload :Dry , 'rest-core/engine/dry'
77
- autoload :HttpClient , 'rest-core/engine/http-client'
37
+ autoload :ErrorHandler , 'rest-core/middleware/error_handler'
38
+ autoload :FollowRedirect , 'rest-core/middleware/follow_redirect'
39
+ autoload :JsonRequest , 'rest-core/middleware/json_request'
40
+ autoload :JsonResponse , 'rest-core/middleware/json_response'
41
+ autoload :QueryResponse , 'rest-core/middleware/query_response'
42
+ autoload :Oauth1Header , 'rest-core/middleware/oauth1_header'
43
+ autoload :Oauth2Header , 'rest-core/middleware/oauth2_header'
44
+ autoload :Oauth2Query , 'rest-core/middleware/oauth2_query'
45
+ autoload :Retry , 'rest-core/middleware/retry'
46
+ autoload :Timeout , 'rest-core/middleware/timeout'
78
47
 
79
48
  # clients
80
- autoload :Simple , 'rest-core/client/simple'
81
- autoload :Universal , 'rest-core/client/universal'
49
+ autoload :Universal , 'rest-core/client/universal'
82
50
 
83
51
  # You might want to call this before launching your application in a
84
52
  # threaded environment to avoid thread-safety issue in autoload.
@@ -95,11 +63,6 @@ module RestCore
95
63
  eagerload(c, loaded) if c.respond_to?(:constants) && !loaded[n]
96
64
  }
97
65
  end
98
-
99
- # identity function
100
- def self.id
101
- @id ||= lambda{ |a| a }
102
- end
103
66
  end
104
67
 
105
68
  RC = RestCore unless Object.const_defined?(:RC)
@@ -1,6 +1,8 @@
1
1
 
2
+ require 'rest-core'
3
+
2
4
  module RestCore
3
- Universal = Builder.client do
5
+ Universal = RestBuilder::Builder.client do
4
6
  use DefaultSite , nil
5
7
  use DefaultHeaders, {}
6
8
  use DefaultQuery , {}