wash_out 0.9.2 → 0.11.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.travis.yml +35 -4
  4. data/Appraisals +8 -12
  5. data/Gemfile +1 -1
  6. data/README.md +85 -7
  7. data/Rakefile +15 -5
  8. data/app/helpers/wash_out_helper.rb +59 -24
  9. data/app/views/{wash_with_soap → wash_out}/document/error.builder +0 -0
  10. data/app/views/{wash_with_soap → wash_out}/document/response.builder +7 -0
  11. data/app/views/{wash_with_soap → wash_out}/document/wsdl.builder +14 -14
  12. data/app/views/{wash_with_soap → wash_out}/rpc/error.builder +0 -0
  13. data/app/views/{wash_with_soap → wash_out}/rpc/response.builder +8 -1
  14. data/app/views/{wash_with_soap → wash_out}/rpc/wsdl.builder +15 -15
  15. data/gemfiles/rails_3.2.13.gemfile +21 -0
  16. data/gemfiles/rails_4.0.0.gemfile +20 -0
  17. data/gemfiles/rails_4.1.0.gemfile +20 -0
  18. data/gemfiles/rails_4.2.0.gemfile +20 -0
  19. data/gemfiles/rails_5.0.0.beta2.gemfile +19 -0
  20. data/gemfiles/rails_5.0.0.gemfile +19 -0
  21. data/lib/wash_out/dispatcher.rb +96 -39
  22. data/lib/wash_out/param.rb +14 -2
  23. data/lib/wash_out/router.rb +52 -22
  24. data/lib/wash_out/soap.rb +11 -0
  25. data/lib/wash_out/version.rb +1 -1
  26. data/lib/wash_out/wsse.rb +3 -3
  27. data/lib/wash_out.rb +32 -5
  28. data/spec/dummy/config/environments/test.rb +1 -0
  29. data/spec/fixtures/nested_refs_to_arrays.xml +19 -0
  30. data/spec/fixtures/ref_to_one_array.xml +11 -0
  31. data/spec/fixtures/refs_to_arrays.xml +16 -0
  32. data/spec/lib/wash_out/dispatcher_spec.rb +124 -17
  33. data/spec/lib/wash_out/middleware_spec.rb +8 -8
  34. data/spec/lib/wash_out/param_spec.rb +43 -11
  35. data/spec/lib/wash_out/router_spec.rb +33 -5
  36. data/spec/lib/wash_out/type_spec.rb +9 -9
  37. data/spec/lib/wash_out_spec.rb +361 -103
  38. data/spec/spec_helper.rb +26 -4
  39. metadata +18 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9149b2f9a1a04ad8d6ba859ef68f2dbf9db6d585
4
- data.tar.gz: 55936871f904cf8d45517312b4479a39a5a5e5d5
3
+ metadata.gz: 82173ea05524c819f835867ecc6c49b2e5264be4
4
+ data.tar.gz: c539a9c5a8793bb884c575f03624aec4f78dad09
5
5
  SHA512:
6
- metadata.gz: 5e2798c550e16322bb72de0dfa08c0e3a18ec3d292b481fc905d36f72d4b51a60bd889a583b723fc54081a484520c260a07e8b28dab1bb9babfa10f115e76e4b
7
- data.tar.gz: 08821de12b76c9fc9f4c79ddc381279ebddfa7c42d6a197e9a7b7528f94044b46927edffab4bf9bb7dfcb090e4678effe80ef1e61cfd4cdee6c339dd0ed64090
6
+ metadata.gz: f95800e511ef556fcd9be44eb3f15ce7c8a95ed9f90cf9bc35d2870f89c4cd7357059d914bc2f0c81eef0119adf092c6fad0cb803e4bc097c03cdcc25a01d8ab
7
+ data.tar.gz: e0aee07a1f29c56a175b4bbb764fffb086e515084783a305db61697efe287080aee785ed6cf165b58f285a615df3c93cd13dfafedc865c724fc82a14e4e3d13c
data/.gitignore CHANGED
@@ -11,7 +11,7 @@ pkg/
11
11
  spec/dummy/db/*.sqlite3
12
12
  spec/dummy/log/*.log
13
13
  spec/dummy/tmp/
14
- gemfiles
14
+ gemfiles/*.lock
15
15
  coverage
16
16
  tags
17
17
  Gemfile.lock
data/.travis.yml CHANGED
@@ -1,7 +1,38 @@
1
- before_install:
2
- - gem install bundler
1
+ script: bundle exec rspec
2
+ gemfile:
3
+ - gemfiles/rails_3.2.13.gemfile
4
+ - gemfiles/rails_4.0.0.gemfile
5
+ - gemfiles/rails_4.1.0.gemfile
6
+ - gemfiles/rails_4.2.0.gemfile
7
+ - gemfiles/rails_5.0.0.gemfile
3
8
  rvm:
4
9
  - 1.9.3
5
- - jruby-19mode
6
10
  - 2.0.0
7
- - 2.1.0
11
+ - 2.1.8
12
+ - 2.2.4
13
+ - 2.3.0
14
+ - jruby
15
+ matrix:
16
+ exclude:
17
+ - rvm: 2.2.4
18
+ gemfile: gemfiles/rails_3.2.13.gemfile
19
+ - rvm: 2.3.0
20
+ gemfile: gemfiles/rails_3.2.13.gemfile
21
+ - rvm: 1.9.3
22
+ gemfile: gemfiles/rails_4.0.0.gemfile
23
+ - rvm: 1.9.3
24
+ gemfile: gemfiles/rails_4.2.0.gemfile
25
+ - rvm: jruby
26
+ gemfile: gemfiles/rails_4.2.0.gemfile
27
+ - rvm: 1.9.3
28
+ gemfile: gemfiles/rails_5.0.0.gemfile
29
+ - rvm: 2.0.0
30
+ gemfile: gemfiles/rails_5.0.0.gemfile
31
+ - rvm: 2.1.8
32
+ gemfile: gemfiles/rails_5.0.0.gemfile
33
+ - rvm: 2.2.4
34
+ gemfile: gemfiles/rails_5.0.0.gemfile
35
+ - rvm: jruby
36
+ gemfile: gemfiles/rails_5.0.0.gemfile
37
+ before_install:
38
+ - gem update bundler
data/Appraisals CHANGED
@@ -1,23 +1,19 @@
1
- appraise "rails-3.2.8" do
2
- gem "rails", "3.2.8"
3
- end
4
-
5
- appraise "rails-3.1.3" do
6
- gem "rails", "3.1.3"
7
- end
8
-
9
- appraise "rails-3.2.12" do
10
- gem "rails", "3.2.12"
11
- end
12
-
13
1
  appraise "rails-4.0.0" do
14
2
  gem "rails", "4.0.0"
3
+ gem "listen", "< 3.1.0"
15
4
  end
16
5
 
17
6
  appraise "rails-4.1.0" do
18
7
  gem "rails", "4.1.0"
8
+ gem "listen", "< 3.1.0"
19
9
  end
20
10
 
21
11
  appraise "rails-4.2.0" do
22
12
  gem "rails", "4.2.0"
13
+ gem "listen", "< 3.1.0"
14
+ end
15
+
16
+
17
+ appraise "rails-5.0.0" do
18
+ gem "rails", "5.0.0"
23
19
  end
data/Gemfile CHANGED
@@ -14,4 +14,4 @@ gem 'appraisal'
14
14
  gem 'tzinfo'
15
15
  gem 'pry'
16
16
  gem 'simplecov'
17
- gem 'simplecov-summary'
17
+ gem 'simplecov-summary'
data/README.md CHANGED
@@ -10,11 +10,7 @@ But if you have a chance, please [http://stopsoap.com/](http://stopsoap.com/).
10
10
 
11
11
  ## Compatibility
12
12
 
13
- Rails >3.0 only. MRI 1.9, 2.0, JRuby (--1.9).
14
-
15
- Ruby 1.8 is not officially supported since 0.5.3. We will accept further compatibilty pull-requests but no upcoming versions will be tested against it.
16
-
17
- Rubinius support temporarily dropped since 0.6.2 due to Rails 4 incompatibility.
13
+ Rails 4.0 and higher is tested. Code is known to work with earlier versions but we don't bother testing outdated versions anymore - give it a try if you are THAT unlucky.
18
14
 
19
15
  ## Installation
20
16
 
@@ -75,15 +71,97 @@ class RumbasController < ApplicationController
75
71
  :args => { :data => [:integer] },
76
72
  :return => [:boolean]
77
73
  def integers_to_boolean
78
- render :soap => params[:data].map{|x| x ? 1 : 0}
74
+ render :soap => params[:data].map{|i| i > 0}
79
75
  end
80
76
 
77
+ # Params from XML attributes;
78
+ # e.g. for a request to the 'AddCircle' action:
79
+ # <soapenv:Envelope>
80
+ # <soapenv:Body>
81
+ # <AddCircle>
82
+ # <Circle radius="5.0">
83
+ # <Center x="10" y="12" />
84
+ # </Circle>
85
+ # </AddCircle>
86
+ # </soapenv:Body>
87
+ # </soapenv:Envelope>
88
+ soap_action "AddCircle",
89
+ :args => { :circle => { :center => { :@x => :integer,
90
+ :@y => :integer },
91
+ :@radius => :double } },
92
+ :return => nil, # [] for wash_out below 0.3.0
93
+ :to => :add_circle
94
+ def add_circle
95
+ circle = params[:circle]
96
+ Circle.new(circle[:center][:x], circle[:center][:y], circle[:radius])
97
+
98
+ render :soap => nil
99
+ end
100
+
101
+ # With a customised input tag name, in case params are wrapped;
102
+ # e.g. for a request to the 'IntegersToBoolean' action:
103
+ # <soapenv:Envelope>
104
+ # <soapenv:Body>
105
+ # <MyRequest> <!-- not <IntegersToBoolean> -->
106
+ # <Data>...</Data>
107
+ # </MyRequest>
108
+ # </soapenv:Body>
109
+ # </soapenv:Envelope>
110
+ soap_action "integers_to_boolean",
111
+ :args => { :my_request => { :data => [:integer] } },
112
+ :as => 'MyRequest',
113
+ :return => [:boolean]
114
+
81
115
  # You can use all Rails features like filtering, too. A SOAP controller
82
116
  # is just like a normal controller with a special routing.
83
117
  before_filter :dump_parameters
84
118
  def dump_parameters
85
119
  Rails.logger.debug params.inspect
86
120
  end
121
+
122
+
123
+ # Rendering SOAP headers
124
+ soap_action "integer_to_header_string",
125
+ :args => :integer,
126
+ :return => :string,
127
+ :header_return => :string
128
+ def integer_to_header_string
129
+ render :soap => params[:value].to_s, :header => (params[:value]+1).to_s
130
+ end
131
+
132
+ # Reading SOAP Headers
133
+ # This is different than normal SOAP params, because we don't specify the incoming format of the header,
134
+ # but we can still access it through `soap_request.headers`. Note that the values are all strings or hashes.
135
+ soap_action "AddCircleWithHeaderRadius",
136
+ :args => { :circle => { :center => { :x => :integer,
137
+ :y => :integer } } },
138
+ :return => nil, # [] for wash_out below 0.3.0
139
+ :to => :add_circle
140
+ # e.g. for a request to the 'AddCircleWithHeaderRadius' action:
141
+ # <soapenv:Envelope>
142
+ # <soap:Header>
143
+ # <radius>12345</radius>
144
+ # </soap:Header>
145
+ # <soapenv:Body>
146
+ # <AddCircle>
147
+ # <Circle radius="5.0">
148
+ # <Center x="10" y="12" />
149
+ # </Circle>
150
+ # </AddCircle>
151
+ # </soapenv:Body>
152
+ # </soapenv:Envelope>
153
+ def add_circle_with_header_radius
154
+ circle = params[:circle]
155
+ radius = soap_request.headers[:radius]
156
+ raise SOAPError, "radius must be specified in the SOAP header" if radius.blank?
157
+ radius = radius.to_f
158
+ raise SOAPError, "radius is too small" if radius < 3.0
159
+
160
+ Circle.new(circle[:center][:x], circle[:center][:y], radius)
161
+
162
+ render :soap => nil
163
+ end
164
+
87
165
  end
88
166
  ```
89
167
 
@@ -122,7 +200,7 @@ inside separate classes for the complex ones. Here's the way to do that:
122
200
  class Fluffy < WashOut::Type
123
201
  map :universe => {
124
202
  :name => :string,
125
- :age => :int
203
+ :age => :integer
126
204
  }
127
205
  end
128
206
 
data/Rakefile CHANGED
@@ -3,12 +3,22 @@ require 'bundler/gem_tasks'
3
3
  require 'appraisal'
4
4
  require 'rspec/core/rake_task'
5
5
 
6
- RSpec::Core::RakeTask.new(:spec)
6
+ RSpec::Core::RakeTask.new
7
7
 
8
- desc "Default: run the unit tests."
9
- task :default => [:all]
8
+ task :console do
9
+ require "action_controller/railtie"
10
+ require "rails/test_unit/railtie"
11
+ Bundler.require
12
+ binding.pry
13
+ end
14
+
15
+
16
+ desc 'Default: run the unit tests.'
17
+ task default: [:all]
10
18
 
11
19
  desc 'Test the plugin under all supported Rails versions.'
12
- task :all => ["appraisal:install"] do |t|
13
- exec('rake appraisal spec')
20
+ task :all do |_t|
21
+ # this is needed for minitest because it does not support "--pattern" option as Rspec Does
22
+ ENV['SPEC'] = '--name=spec/**{,/*/**}/*_spec.rb'
23
+ exec('bundle exec appraisal install && bundle exec rake appraisal spec')
14
24
  end
@@ -3,37 +3,57 @@ module WashOutHelper
3
3
  def wsdl_data_options(param)
4
4
  case controller.soap_config.wsdl_style
5
5
  when 'rpc'
6
- { :"xsi:type" => param.namespaced_type }
6
+ if param.map.present? || param.value
7
+ { :"xsi:type" => param.namespaced_type }
8
+ else
9
+ { :"xsi:nil" => true }
10
+ end
7
11
  when 'document'
8
12
  { }
9
13
  end
10
14
  end
11
15
 
16
+ def wsdl_data_attrs(param)
17
+ param.map.reduce({}) do |memo, p|
18
+ if p.respond_to?(:attribute?) && p.attribute?
19
+ memo.merge p.attr_name => p.value
20
+ else
21
+ memo
22
+ end
23
+ end
24
+ end
25
+
12
26
  def wsdl_data(xml, params)
13
27
  params.each do |param|
28
+ next if param.attribute?
29
+
14
30
  tag_name = param.name
15
31
  param_options = wsdl_data_options(param)
32
+ param_options.merge! wsdl_data_attrs(param)
16
33
 
17
- if !param.struct?
18
- if !param.multiplied
19
- xml.tag! tag_name, param.value, param_options
34
+ if param.struct?
35
+ if param.multiplied
36
+ param.map.each do |p|
37
+ attrs = wsdl_data_attrs p
38
+ if p.is_a?(Array) || p.map.size > attrs.size
39
+ blk = proc { wsdl_data(xml, p.map) }
40
+ end
41
+ attrs.reject! { |_, v| v.nil? }
42
+ xml.tag! tag_name, param_options.merge(attrs), &blk
43
+ end
20
44
  else
21
- param.value = [] unless param.value.is_a?(Array)
22
- param.value.each do |v|
23
- xml.tag! tag_name, v, param_options
45
+ xml.tag! tag_name, param_options do
46
+ wsdl_data(xml, param.map)
24
47
  end
25
48
  end
26
49
  else
27
- if !param.multiplied
28
- xml.tag! tag_name, param_options do
29
- wsdl_data(xml, param.map)
50
+ if param.multiplied
51
+ param.value = [] unless param.value.is_a?(Array)
52
+ param.value.each do |v|
53
+ xml.tag! tag_name, v, param_options
30
54
  end
31
55
  else
32
- param.map.each do |p|
33
- xml.tag! tag_name, param_options do
34
- wsdl_data(xml, p.map)
35
- end
36
- end
56
+ xml.tag! tag_name, param.value, param_options
37
57
  end
38
58
  end
39
59
  end
@@ -45,12 +65,27 @@ module WashOutHelper
45
65
  if param.struct?
46
66
  if !defined.include?(param.basic_type)
47
67
  xml.tag! "xsd:complexType", :name => param.basic_type do
48
- xml.tag! "xsd:sequence" do
49
- param.map.each do |value|
50
- more << value if value.struct?
51
- xml.tag! "xsd:element", wsdl_occurence(value, false, :name => value.name, :type => value.namespaced_type)
68
+ attrs, elems = [], []
69
+ param.map.each do |value|
70
+ more << value if value.struct?
71
+ if value.attribute?
72
+ attrs << value
73
+ else
74
+ elems << value
52
75
  end
53
76
  end
77
+
78
+ if elems.any?
79
+ xml.tag! "xsd:sequence" do
80
+ elems.each do |value|
81
+ xml.tag! "xsd:element", wsdl_occurence(value, false, :name => value.name, :type => value.namespaced_type)
82
+ end
83
+ end
84
+ end
85
+
86
+ attrs.each do |value|
87
+ xml.tag! "xsd:attribute", wsdl_occurence(value, false, :name => value.attr_name, :type => value.namespaced_type)
88
+ end
54
89
  end
55
90
 
56
91
  defined << param.basic_type
@@ -65,11 +100,11 @@ module WashOutHelper
65
100
  end
66
101
 
67
102
  def wsdl_occurence(param, inject, extend_with = {})
68
- data = !param.multiplied ? {} : {
69
- "#{'xsi:' if inject}minOccurs" => 0,
70
- "#{'xsi:' if inject}maxOccurs" => 'unbounded'
71
- }
72
-
103
+ data = {"#{'xsi:' if inject}nillable" => 'true'}
104
+ if param.multiplied
105
+ data["#{'xsi:' if inject}minOccurs"] = 0
106
+ data["#{'xsi:' if inject}maxOccurs"] = 'unbounded'
107
+ end
73
108
  extend_with.merge(data)
74
109
  end
75
110
  end
@@ -2,6 +2,13 @@ xml.instruct!
2
2
  xml.tag! "soap:Envelope", "xmlns:soap" => 'http://schemas.xmlsoap.org/soap/envelope/',
3
3
  "xmlns:xsd" => 'http://www.w3.org/2001/XMLSchema',
4
4
  "xmlns:tns" => @namespace do
5
+ if !header.nil?
6
+ xml.tag! "soap:Header" do
7
+ xml.tag! "tns:#{@action_spec[:response_tag]}" do
8
+ wsdl_data xml, header
9
+ end
10
+ end
11
+ end
5
12
  xml.tag! "soap:Body" do
6
13
  xml.tag! "tns:#{@action_spec[:response_tag]}" do
7
14
  wsdl_data xml, result
@@ -19,6 +19,19 @@ xml.definitions 'xmlns' => 'http://schemas.xmlsoap.org/wsdl/',
19
19
  end
20
20
  end
21
21
 
22
+ @map.each do |operation, formats|
23
+ xml.message :name => "#{operation}" do
24
+ formats[:in].each do |p|
25
+ xml.part wsdl_occurence(p, false, :name => p.name, :type => p.namespaced_type)
26
+ end
27
+ end
28
+ xml.message :name => formats[:response_tag] do
29
+ formats[:out].each do |p|
30
+ xml.part wsdl_occurence(p, false, :name => p.name, :type => p.namespaced_type)
31
+ end
32
+ end
33
+ end
34
+
22
35
  xml.portType :name => "#{@name}_port" do
23
36
  @map.each do |operation, formats|
24
37
  xml.operation :name => operation do
@@ -49,20 +62,7 @@ xml.definitions 'xmlns' => 'http://schemas.xmlsoap.org/wsdl/',
49
62
 
50
63
  xml.service :name => "service" do
51
64
  xml.port :name => "#{@name}_port", :binding => "tns:#{@name}_binding" do
52
- xml.tag! "soap:address", :location => send("#{@name}_action_url")
53
- end
54
- end
55
-
56
- @map.each do |operation, formats|
57
- xml.message :name => "#{operation}" do
58
- formats[:in].each do |p|
59
- xml.part wsdl_occurence(p, false, :name => p.name, :type => p.namespaced_type)
60
- end
61
- end
62
- xml.message :name => formats[:response_tag] do
63
- formats[:out].each do |p|
64
- xml.part wsdl_occurence(p, false, :name => p.name, :type => p.namespaced_type)
65
- end
65
+ xml.tag! "soap:address", :location => WashOut::Router.url(request, @name)
66
66
  end
67
67
  end
68
68
  end
@@ -3,9 +3,16 @@ xml.tag! "soap:Envelope", "xmlns:soap" => 'http://schemas.xmlsoap.org/soap/envel
3
3
  "xmlns:xsd" => 'http://www.w3.org/2001/XMLSchema',
4
4
  "xmlns:xsi" => 'http://www.w3.org/2001/XMLSchema-instance',
5
5
  "xmlns:tns" => @namespace do
6
+ if !header.nil?
7
+ xml.tag! "soap:Header" do
8
+ xml.tag! "tns:#{@action_spec[:response_tag]}" do
9
+ wsdl_data xml, header
10
+ end
11
+ end
12
+ end
6
13
  xml.tag! "soap:Body" do
7
14
  xml.tag! "tns:#{@action_spec[:response_tag]}" do
8
15
  wsdl_data xml, result
9
16
  end
10
17
  end
11
- end
18
+ end
@@ -19,6 +19,19 @@ xml.definitions 'xmlns' => 'http://schemas.xmlsoap.org/wsdl/',
19
19
  end
20
20
  end
21
21
 
22
+ @map.each do |operation, formats|
23
+ xml.message :name => "#{operation}" do
24
+ formats[:in].each do |p|
25
+ xml.part wsdl_occurence(p, true, :name => p.name, :type => p.namespaced_type)
26
+ end
27
+ end
28
+ xml.message :name => formats[:response_tag] do
29
+ formats[:out].each do |p|
30
+ xml.part wsdl_occurence(p, true, :name => p.name, :type => p.namespaced_type)
31
+ end
32
+ end
33
+ end
34
+
22
35
  xml.portType :name => "#{@name}_port" do
23
36
  @map.each do |operation, formats|
24
37
  xml.operation :name => operation do
@@ -49,20 +62,7 @@ xml.definitions 'xmlns' => 'http://schemas.xmlsoap.org/wsdl/',
49
62
 
50
63
  xml.service :name => "service" do
51
64
  xml.port :name => "#{@name}_port", :binding => "tns:#{@name}_binding" do
52
- xml.tag! "soap:address", :location => send("#{@name}_action_url")
53
- end
54
- end
55
-
56
- @map.each do |operation, formats|
57
- xml.message :name => "#{operation}" do
58
- formats[:in].each do |p|
59
- xml.part wsdl_occurence(p, true, :name => p.name, :type => p.namespaced_type)
60
- end
61
- end
62
- xml.message :name => formats[:response_tag] do
63
- formats[:out].each do |p|
64
- xml.part wsdl_occurence(p, true, :name => p.name, :type => p.namespaced_type)
65
- end
65
+ xml.tag! "soap:address", :location => WashOut::Router.url(request, @name)
66
66
  end
67
67
  end
68
- end
68
+ end
@@ -0,0 +1,21 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "wasabi"
6
+ gem "savon", ">= 2.0.0"
7
+ gem "httpi"
8
+ gem "rspec-rails"
9
+ gem "guard"
10
+ gem "guard-rspec"
11
+ gem "rb-fsevent"
12
+ gem "appraisal"
13
+ gem "tzinfo"
14
+ gem "pry"
15
+ gem "simplecov"
16
+ gem "simplecov-summary"
17
+ gem "rails", "3.2.13"
18
+ gem "test-unit"
19
+ gem "listen", "< 3.1.0"
20
+
21
+ gemspec :path => "../"
@@ -0,0 +1,20 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "wasabi"
6
+ gem "savon", ">= 2.0.0"
7
+ gem "httpi"
8
+ gem "rspec-rails"
9
+ gem "guard"
10
+ gem "guard-rspec"
11
+ gem "rb-fsevent"
12
+ gem "appraisal"
13
+ gem "tzinfo"
14
+ gem "pry"
15
+ gem "simplecov"
16
+ gem "simplecov-summary"
17
+ gem "rails", "4.0.0"
18
+ gem "listen", "< 3.1.0"
19
+
20
+ gemspec :path => "../"
@@ -0,0 +1,20 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "wasabi"
6
+ gem "savon", ">= 2.0.0"
7
+ gem "httpi"
8
+ gem "rspec-rails"
9
+ gem "guard"
10
+ gem "guard-rspec"
11
+ gem "rb-fsevent"
12
+ gem "appraisal"
13
+ gem "tzinfo"
14
+ gem "pry"
15
+ gem "simplecov"
16
+ gem "simplecov-summary"
17
+ gem "rails", "4.1.0"
18
+ gem "listen", "< 3.1.0"
19
+
20
+ gemspec :path => "../"
@@ -0,0 +1,20 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "wasabi"
6
+ gem "savon", ">= 2.0.0"
7
+ gem "httpi"
8
+ gem "rspec-rails"
9
+ gem "guard"
10
+ gem "guard-rspec"
11
+ gem "rb-fsevent"
12
+ gem "appraisal"
13
+ gem "tzinfo"
14
+ gem "pry"
15
+ gem "simplecov"
16
+ gem "simplecov-summary"
17
+ gem "rails", "4.2.0"
18
+ gem "listen", "< 3.1.0"
19
+
20
+ gemspec :path => "../"
@@ -0,0 +1,19 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "wasabi"
6
+ gem "savon", ">= 2.0.0"
7
+ gem "httpi"
8
+ gem "rspec-rails"
9
+ gem "guard"
10
+ gem "guard-rspec"
11
+ gem "rb-fsevent"
12
+ gem "appraisal"
13
+ gem "tzinfo"
14
+ gem "pry"
15
+ gem "simplecov"
16
+ gem "simplecov-summary"
17
+ gem "rails", "5.0.0.beta2"
18
+
19
+ gemspec :path => "../"
@@ -0,0 +1,19 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "wasabi"
6
+ gem "savon", ">= 2.0.0"
7
+ gem "httpi"
8
+ gem "rspec-rails"
9
+ gem "guard"
10
+ gem "guard-rspec"
11
+ gem "rb-fsevent"
12
+ gem "appraisal"
13
+ gem "tzinfo"
14
+ gem "pry"
15
+ gem "simplecov"
16
+ gem "simplecov-summary"
17
+ gem "rails", "5.0.0"
18
+
19
+ gemspec :path => "../"