flipp-mockserver-client 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +21 -0
- data/.rubocop.yml +7 -0
- data/Gemfile +4 -0
- data/README.md +182 -0
- data/Rakefile +10 -0
- data/bin/mockserver +9 -0
- data/lib/cli.rb +146 -0
- data/lib/mockserver-client.rb +17 -0
- data/lib/mockserver/abstract_client.rb +111 -0
- data/lib/mockserver/mock_server_client.rb +59 -0
- data/lib/mockserver/model/array_of.rb +85 -0
- data/lib/mockserver/model/body.rb +56 -0
- data/lib/mockserver/model/cookie.rb +36 -0
- data/lib/mockserver/model/delay.rb +34 -0
- data/lib/mockserver/model/enum.rb +47 -0
- data/lib/mockserver/model/expectation.rb +158 -0
- data/lib/mockserver/model/forward.rb +41 -0
- data/lib/mockserver/model/header.rb +43 -0
- data/lib/mockserver/model/parameter.rb +43 -0
- data/lib/mockserver/model/request.rb +77 -0
- data/lib/mockserver/model/response.rb +45 -0
- data/lib/mockserver/model/times.rb +61 -0
- data/lib/mockserver/proxy_client.rb +9 -0
- data/lib/mockserver/utility_methods.rb +59 -0
- data/lib/mockserver/version.rb +5 -0
- data/mockserver-client.gemspec +36 -0
- data/pom.xml +116 -0
- data/spec/fixtures/forward_mockserver.json +7 -0
- data/spec/fixtures/incorrect_login_response.json +20 -0
- data/spec/fixtures/post_login_request.json +22 -0
- data/spec/fixtures/register_expectation.json +50 -0
- data/spec/fixtures/retrieved_request.json +22 -0
- data/spec/fixtures/search_request.json +6 -0
- data/spec/fixtures/times_once.json +6 -0
- data/spec/integration/mock_client_integration_spec.rb +82 -0
- data/spec/mockserver/builder_spec.rb +136 -0
- data/spec/mockserver/mock_client_spec.rb +80 -0
- data/spec/mockserver/proxy_client_spec.rb +38 -0
- data/spec/spec_helper.rb +61 -0
- metadata +293 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'hashie'
|
3
|
+
require_relative './enum'
|
4
|
+
|
5
|
+
#
|
6
|
+
# A class to model a forwarding on a request.
|
7
|
+
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
8
|
+
#
|
9
|
+
module MockServer::Model
|
10
|
+
# Enum for a scheme used in a forward request
|
11
|
+
class Scheme < SymbolizedEnum
|
12
|
+
def allowed_values
|
13
|
+
[:HTTP, :HTTPS]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Model for forwarding
|
18
|
+
class Forward < Hashie::Dash
|
19
|
+
include Hashie::Extensions::MethodAccess
|
20
|
+
include Hashie::Extensions::IgnoreUndeclared
|
21
|
+
include Hashie::Extensions::Coercion
|
22
|
+
|
23
|
+
property :host, default: 'localhost'
|
24
|
+
property :port, default: 80
|
25
|
+
property :scheme, default: 'HTTP'
|
26
|
+
|
27
|
+
coerce_key :host, String
|
28
|
+
coerce_key :scheme, Scheme
|
29
|
+
end
|
30
|
+
|
31
|
+
# DSL methods for forward
|
32
|
+
module DSL
|
33
|
+
def forward(&_)
|
34
|
+
obj = Forward.new
|
35
|
+
yield obj if block_given?
|
36
|
+
obj
|
37
|
+
end
|
38
|
+
|
39
|
+
alias_method :http_forward, :forward
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'hashie'
|
3
|
+
require_relative './array_of'
|
4
|
+
|
5
|
+
#
|
6
|
+
# A class to model headers in payloads.
|
7
|
+
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
8
|
+
#
|
9
|
+
module MockServer::Model
|
10
|
+
# A class that only stores strings
|
11
|
+
class Strings < ArrayOf
|
12
|
+
def child_class
|
13
|
+
String
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Model for header
|
18
|
+
class Header < Hashie::Dash
|
19
|
+
include Hashie::Extensions::MethodAccess
|
20
|
+
include Hashie::Extensions::IgnoreUndeclared
|
21
|
+
include Hashie::Extensions::Coercion
|
22
|
+
|
23
|
+
property :name, required: true
|
24
|
+
property :values, default: Strings.new([])
|
25
|
+
|
26
|
+
coerce_key :name, String
|
27
|
+
coerce_key :values, Strings
|
28
|
+
end
|
29
|
+
|
30
|
+
# A collection that only stores headers
|
31
|
+
class Headers < ArrayOf
|
32
|
+
def child_class
|
33
|
+
Header
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# DSL methods for header
|
38
|
+
module DSL
|
39
|
+
def header(key, *value)
|
40
|
+
Header.new(name: key, values: value)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'hashie'
|
3
|
+
require_relative './array_of'
|
4
|
+
|
5
|
+
#
|
6
|
+
# A class to model parameters in payloads.
|
7
|
+
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
8
|
+
#
|
9
|
+
module MockServer::Model
|
10
|
+
# A class that only stores strings
|
11
|
+
class Strings < ArrayOf
|
12
|
+
def child_class
|
13
|
+
String
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Model for parameter
|
18
|
+
class Parameter < Hashie::Dash
|
19
|
+
include Hashie::Extensions::MethodAccess
|
20
|
+
include Hashie::Extensions::IgnoreUndeclared
|
21
|
+
include Hashie::Extensions::Coercion
|
22
|
+
|
23
|
+
property :name, required: true
|
24
|
+
property :values, default: Strings.new([])
|
25
|
+
|
26
|
+
coerce_key :name, String
|
27
|
+
coerce_key :values, Strings
|
28
|
+
end
|
29
|
+
|
30
|
+
# A collection that only stores parameters
|
31
|
+
class Parameters < ArrayOf
|
32
|
+
def child_class
|
33
|
+
Parameter
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# DSL methods for parameter
|
38
|
+
module DSL
|
39
|
+
def parameter(key, *value)
|
40
|
+
Parameter.new(name: key, values: value)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'hashie'
|
3
|
+
require_relative './parameter'
|
4
|
+
require_relative './header'
|
5
|
+
require_relative './cookie'
|
6
|
+
require_relative './body'
|
7
|
+
require_relative './enum'
|
8
|
+
require 'base64'
|
9
|
+
#
|
10
|
+
# A class to model a request in an expectation.
|
11
|
+
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
12
|
+
#
|
13
|
+
module MockServer::Model
|
14
|
+
# Enum for HTTP methods
|
15
|
+
class HTTPMethod < SymbolizedEnum
|
16
|
+
def allowed_values
|
17
|
+
[:GET, :POST, :PUT, :DELETE, :PATCH]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Request model
|
22
|
+
class Request < Hashie::Trash
|
23
|
+
include Hashie::Extensions::MethodAccess
|
24
|
+
include Hashie::Extensions::IgnoreUndeclared
|
25
|
+
include Hashie::Extensions::Coercion
|
26
|
+
|
27
|
+
ALLOWED_METHODS = [:GET, :POST, :PUT, :DELETE, :PATCH]
|
28
|
+
|
29
|
+
property :method, required: true, default: :GET
|
30
|
+
property :path, required: true, default: ''
|
31
|
+
property :query_string_parameters, default: Parameters.new([])
|
32
|
+
property :cookies, default: Cookies.new([])
|
33
|
+
property :headers, default: Headers.new([])
|
34
|
+
property :body
|
35
|
+
|
36
|
+
coerce_key :method, HTTPMethod
|
37
|
+
coerce_key :path, String
|
38
|
+
coerce_key :query_string_parameters, Parameters
|
39
|
+
coerce_key :cookies, Cookies
|
40
|
+
coerce_key :headers, Headers
|
41
|
+
coerce_key :body, String
|
42
|
+
|
43
|
+
# Creates a request from a hash
|
44
|
+
# @param payload [Hash] a hash representation of the request
|
45
|
+
def populate_from_payload(payload)
|
46
|
+
@request = payload[MockServer::HTTP_REQUEST]
|
47
|
+
@request = Request.new(symbolize_keys(@request)) if @request
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Class to store a list of mocks - useful for modeling retrieve endpoint result
|
52
|
+
class Requests < ArrayOf
|
53
|
+
# Code is used to store HTTP status code returned from retrieve endpoint
|
54
|
+
attr_accessor :code
|
55
|
+
|
56
|
+
def child_class
|
57
|
+
Request
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# DSL methods related to requests
|
62
|
+
module DSL
|
63
|
+
def request(method, path, &_)
|
64
|
+
obj = Request.new(method: method, path: path)
|
65
|
+
yield obj if block_given?
|
66
|
+
obj
|
67
|
+
end
|
68
|
+
|
69
|
+
def request_from_json(payload)
|
70
|
+
request = Request.new(symbolize_keys(payload))
|
71
|
+
yield request if block_given?
|
72
|
+
request
|
73
|
+
end
|
74
|
+
|
75
|
+
alias_method :http_request, :request
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require_relative './body'
|
3
|
+
require_relative './delay'
|
4
|
+
require_relative './header'
|
5
|
+
require_relative './cookie'
|
6
|
+
require 'base64'
|
7
|
+
|
8
|
+
#
|
9
|
+
# A class to model a response in an expectation.
|
10
|
+
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
11
|
+
#
|
12
|
+
module MockServer::Model
|
13
|
+
# Model for a mock response
|
14
|
+
class Response < Hashie::Dash
|
15
|
+
include Hashie::Extensions::MethodAccess
|
16
|
+
include Hashie::Extensions::IgnoreUndeclared
|
17
|
+
include Hashie::Extensions::Coercion
|
18
|
+
|
19
|
+
property :status_code, default: 200
|
20
|
+
property :cookies, default: Cookies.new([])
|
21
|
+
property :headers, default: Headers.new([])
|
22
|
+
property :delay
|
23
|
+
property :body
|
24
|
+
|
25
|
+
coerce_key :cookies, Cookies
|
26
|
+
coerce_key :headers, Headers
|
27
|
+
coerce_key :delay, Delay
|
28
|
+
coerce_key :body, String
|
29
|
+
end
|
30
|
+
|
31
|
+
# DSL Methods for a response
|
32
|
+
module DSL
|
33
|
+
def response(&_)
|
34
|
+
obj = Response.new
|
35
|
+
yield obj if block_given?
|
36
|
+
obj
|
37
|
+
end
|
38
|
+
|
39
|
+
def decode(string)
|
40
|
+
Base64.decode64(string)
|
41
|
+
end
|
42
|
+
|
43
|
+
alias_method :http_response, :response
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'hashie'
|
3
|
+
require_relative './enum'
|
4
|
+
|
5
|
+
#
|
6
|
+
# A class to model the number of times an expectation should be respected.
|
7
|
+
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
8
|
+
#
|
9
|
+
module MockServer::Model
|
10
|
+
# Enum for boolean values since Ruby does not have this by default
|
11
|
+
class Boolean < Enum
|
12
|
+
def allowed_values
|
13
|
+
[true, false]
|
14
|
+
end
|
15
|
+
|
16
|
+
def !
|
17
|
+
!@value
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize(supplied_value)
|
21
|
+
@value = pre_process_value(supplied_value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Model for times class
|
26
|
+
class Times < Hashie::Dash
|
27
|
+
include Hashie::Extensions::MethodAccess
|
28
|
+
include Hashie::Extensions::IgnoreUndeclared
|
29
|
+
include Hashie::Extensions::Coercion
|
30
|
+
|
31
|
+
property :remaining_times, default: 0
|
32
|
+
property :unlimited, default: false
|
33
|
+
|
34
|
+
coerce_key :unlimited, Boolean
|
35
|
+
end
|
36
|
+
|
37
|
+
# DSL methods related to times
|
38
|
+
module DSL
|
39
|
+
def unlimited
|
40
|
+
Times.new(unlimited: true)
|
41
|
+
end
|
42
|
+
|
43
|
+
def once
|
44
|
+
Times.new(remaining_times: 1)
|
45
|
+
end
|
46
|
+
|
47
|
+
def exactly(num)
|
48
|
+
Times.new(remaining_times: num)
|
49
|
+
end
|
50
|
+
|
51
|
+
def at_least(num)
|
52
|
+
Times.new(remaining_times: num, unlimited: true)
|
53
|
+
end
|
54
|
+
|
55
|
+
def times(&_)
|
56
|
+
obj = once
|
57
|
+
yield obj if block_given?
|
58
|
+
obj
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'active_support/inflector'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
#
|
6
|
+
# A module that has common utility methods used by this project
|
7
|
+
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
8
|
+
#
|
9
|
+
module MockServer::UtilityMethods
|
10
|
+
# Does the following filter/transform operations on a hash
|
11
|
+
# - exclude null or empty valued keys from the hash
|
12
|
+
# - camelize the keys of the hash
|
13
|
+
# @param obj [Object] an object which will be used to create the hash. Must support :to_hash method
|
14
|
+
# @return [Hash] the transformed hash
|
15
|
+
# rubocop:disable Style/MethodLength
|
16
|
+
# rubocop:disable Style/CyclomaticComplexity
|
17
|
+
def camelized_hash(obj)
|
18
|
+
obj = obj && obj.respond_to?(:to_hash) ? obj.to_hash : obj
|
19
|
+
|
20
|
+
if obj.is_a?(Hash)
|
21
|
+
obj.each_with_object({}) do |(k, v), acc|
|
22
|
+
is_empty = v.nil? || (v.respond_to?(:empty?) ? v.empty? : false)
|
23
|
+
acc[camelize(k)] = camelized_hash(v) unless is_empty
|
24
|
+
end
|
25
|
+
elsif obj.respond_to?(:map)
|
26
|
+
obj.map { |element| camelized_hash(element) }
|
27
|
+
else
|
28
|
+
obj
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Converts keys to symbols
|
33
|
+
# @param hash [Hash] a hash
|
34
|
+
# @return [Hash] a copy of the hash where keys are symbols
|
35
|
+
def symbolize_keys(hash)
|
36
|
+
if hash.is_a?(Hash)
|
37
|
+
Hash[hash.map { |k, v| [k.to_s.underscore.to_sym, symbolize_keys(v)] }]
|
38
|
+
elsif hash.respond_to?(:map)
|
39
|
+
hash.map { |obj| symbolize_keys(obj) }
|
40
|
+
else
|
41
|
+
hash
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# @param str [Object] an object to camelize the string representation of
|
46
|
+
# @return [String] the string converted to camelcase with first letter in lower case
|
47
|
+
def camelize(str)
|
48
|
+
str.to_s.camelize(:lower)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Parse string response into JSON
|
52
|
+
# @param response [Response] from RestClient response
|
53
|
+
# @return [Hash] the parsed response or the object unmodified if parsing is not possible
|
54
|
+
def parse_string_to_json(response)
|
55
|
+
JSON.parse(response)
|
56
|
+
rescue JSON::ParserError
|
57
|
+
response
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'mockserver/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'flipp-mockserver-client'
|
8
|
+
spec.version = '0.1.0'
|
9
|
+
spec.authors = ['original - Nayyara Samuel, James D Bloom', 'modified - Dennis Marcu']
|
10
|
+
spec.summary = 'mockserver-client gem modified for Flipp'
|
11
|
+
spec.description = 'A Ruby Client for MockServer that enables easy mocking of any system you integrate with via HTTP or HTTPS (i.e. services, web sites, etc) modified to work with multiple Fipp requests'
|
12
|
+
|
13
|
+
spec.required_ruby_version = '>= 1.9'
|
14
|
+
spec.required_rubygems_version = '~> 2.0'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1'
|
22
|
+
spec.add_development_dependency 'rake', '~> 10.3'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
24
|
+
spec.add_development_dependency 'simplecov', '~> 0.8'
|
25
|
+
spec.add_development_dependency 'webmock', '~> 1.18'
|
26
|
+
spec.add_development_dependency 'rubocop', '~> 0.23'
|
27
|
+
|
28
|
+
spec.add_dependency 'hashie', '~> 3.0'
|
29
|
+
spec.add_dependency 'json', '~> 1.8'
|
30
|
+
spec.add_dependency 'json_pure', '~> 1.8'
|
31
|
+
spec.add_dependency 'activesupport', '~> 4.1'
|
32
|
+
spec.add_dependency 'rest-client', '~> 1.7'
|
33
|
+
spec.add_dependency 'logging_factory', '~> 0.0.2'
|
34
|
+
spec.add_dependency 'thor', '~> 0.19'
|
35
|
+
spec.add_dependency 'colorize', '~> 0.7'
|
36
|
+
end
|
data/pom.xml
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
3
|
+
<parent>
|
4
|
+
<groupId>org.mock-server</groupId>
|
5
|
+
<artifactId>mockserver</artifactId>
|
6
|
+
<version>3.10.5-SNAPSHOT</version>
|
7
|
+
</parent>
|
8
|
+
<modelVersion>4.0.0</modelVersion>
|
9
|
+
|
10
|
+
<artifactId>mockserver-client-ruby</artifactId>
|
11
|
+
<name>MockServer Ruby Client</name>
|
12
|
+
<description>A ruby client for the MockServer</description>
|
13
|
+
<url>http://www.mock-server.com</url>
|
14
|
+
|
15
|
+
<properties>
|
16
|
+
<skipRubyRelease>true</skipRubyRelease>
|
17
|
+
</properties>
|
18
|
+
|
19
|
+
<build>
|
20
|
+
<plugins>
|
21
|
+
<!-- run mock server for ruby client tests -->
|
22
|
+
<plugin>
|
23
|
+
<groupId>${project.groupId}</groupId>
|
24
|
+
<artifactId>mockserver-maven-plugin</artifactId>
|
25
|
+
<version>${project.version}</version>
|
26
|
+
<configuration>
|
27
|
+
<logLevel>WARN</logLevel>
|
28
|
+
<serverPort>8098</serverPort>
|
29
|
+
<proxyPort>9102</proxyPort>
|
30
|
+
</configuration>
|
31
|
+
<executions>
|
32
|
+
<execution>
|
33
|
+
<id>pre-test</id>
|
34
|
+
<phase>generate-test-sources</phase>
|
35
|
+
<goals>
|
36
|
+
<goal>start</goal>
|
37
|
+
</goals>
|
38
|
+
</execution>
|
39
|
+
<execution>
|
40
|
+
<id>post-test</id>
|
41
|
+
<phase>verify</phase>
|
42
|
+
<goals>
|
43
|
+
<goal>stop</goal>
|
44
|
+
</goals>
|
45
|
+
</execution>
|
46
|
+
</executions>
|
47
|
+
</plugin>
|
48
|
+
<!-- run ruby bundle build and install -->
|
49
|
+
<plugin>
|
50
|
+
<groupId>org.codehaus.mojo</groupId>
|
51
|
+
<artifactId>exec-maven-plugin</artifactId>
|
52
|
+
<version>1.4.0</version>
|
53
|
+
<executions>
|
54
|
+
<execution>
|
55
|
+
<id>bundle_install</id>
|
56
|
+
<phase>prepare-package</phase>
|
57
|
+
<goals>
|
58
|
+
<goal>exec</goal>
|
59
|
+
</goals>
|
60
|
+
<configuration>
|
61
|
+
<executable>bundle</executable>
|
62
|
+
<arguments>
|
63
|
+
<argument>install</argument>
|
64
|
+
<argument>--path</argument>
|
65
|
+
<argument>vendor/bundle</argument>
|
66
|
+
</arguments>
|
67
|
+
<environmentVariables>
|
68
|
+
<BUNDLE_GEMFILE>${basedir}/Gemfile</BUNDLE_GEMFILE>
|
69
|
+
</environmentVariables>
|
70
|
+
</configuration>
|
71
|
+
</execution>
|
72
|
+
<execution>
|
73
|
+
<id>ruby_make</id>
|
74
|
+
<phase>prepare-package</phase>
|
75
|
+
<goals>
|
76
|
+
<goal>exec</goal>
|
77
|
+
</goals>
|
78
|
+
<configuration>
|
79
|
+
<skip>${skipTests}</skip>
|
80
|
+
<executable>bundle</executable>
|
81
|
+
<arguments>
|
82
|
+
<argument>exec</argument>
|
83
|
+
<argument>rake</argument>
|
84
|
+
<argument>build</argument>
|
85
|
+
<argument>spec</argument>
|
86
|
+
</arguments>
|
87
|
+
<environmentVariables>
|
88
|
+
<BUNDLE_GEMFILE>${basedir}/Gemfile</BUNDLE_GEMFILE>
|
89
|
+
</environmentVariables>
|
90
|
+
</configuration>
|
91
|
+
</execution>
|
92
|
+
<execution>
|
93
|
+
<id>ruby_release</id>
|
94
|
+
<phase>deploy</phase>
|
95
|
+
<goals>
|
96
|
+
<goal>exec</goal>
|
97
|
+
</goals>
|
98
|
+
<configuration>
|
99
|
+
<skip>${skipRubyRelease}</skip>
|
100
|
+
<executable>bundle</executable>
|
101
|
+
<arguments>
|
102
|
+
<argument>exec</argument>
|
103
|
+
<argument>rake</argument>
|
104
|
+
<argument>release</argument>
|
105
|
+
</arguments>
|
106
|
+
<environmentVariables>
|
107
|
+
<BUNDLE_GEMFILE>${basedir}/Gemfile</BUNDLE_GEMFILE>
|
108
|
+
</environmentVariables>
|
109
|
+
</configuration>
|
110
|
+
</execution>
|
111
|
+
</executions>
|
112
|
+
</plugin>
|
113
|
+
</plugins>
|
114
|
+
</build>
|
115
|
+
|
116
|
+
</project>
|