flipp-mockserver-client 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|