embark-journey 0.0.4

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e479a384c70a25dae3045201d6aa4ca7bdbc2cbc
4
+ data.tar.gz: c41a09cfab41b72a5cde48002be0e73afedee615
5
+ SHA512:
6
+ metadata.gz: 15e5882c91e38f6b5289bd0b4ca7ef021d8811eee5a55293d4c7142856b62e2a120727814c0a2a791d1fbe3bc7e0da69486398b016aec4698b64de8859a5388a
7
+ data.tar.gz: 735730f502bb4c33c653c70f0f5ef22cae41f7b8e3d8ae7f3280aafd8919bcd37347064bd2390b9e58f4e61689950e1a3997247555ffa93ea3e6e3a19ce1fef6
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .env
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
@@ -0,0 +1 @@
1
+ 2.0.0-p247
File without changes
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Dan Davey
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Journey
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'journey'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install journey
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
File without changes
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'journey/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "embark-journey"
8
+ spec.version = Journey::VERSION::STRING
9
+ spec.authors = ["Dan Davey"]
10
+ spec.email = ["dan@recombinary.com"]
11
+ spec.description = %q{Extends ActiveResource to provide a base for Journey resources, supporting all attribute types}
12
+ spec.summary = %q{Journey API wrapper for Ruby}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency 'active_attr', '~> 0.8.2'
22
+ spec.add_runtime_dependency 'activeresource', '~> 4.0.0'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'rake', '~> 10.1.1'
26
+ spec.add_development_dependency 'rspec', '~> 3.0.0.beta1'
27
+ spec.add_development_dependency 'dotenv', '~> 0.9.0'
28
+ spec.add_development_dependency 'pry', '~> 0.9.12.4'
29
+
30
+ end
@@ -0,0 +1,2 @@
1
+ require 'active_resource'
2
+ require 'active_resource/associations'
@@ -0,0 +1,174 @@
1
+ module ActiveResource::Associations
2
+
3
+ module Builder
4
+ autoload :Association, 'active_resource/associations/builder/association'
5
+ autoload :HasMany, 'active_resource/associations/builder/has_many'
6
+ autoload :HasOne, 'active_resource/associations/builder/has_one'
7
+ autoload :BelongsTo, 'active_resource/associations/builder/belongs_to'
8
+ end
9
+
10
+
11
+
12
+ # Specifies a one-to-many association.
13
+ #
14
+ # === Options
15
+ # [:class_name]
16
+ # Specify the class name of the association. This class name would
17
+ # be used for resolving the association class.
18
+ #
19
+ # ==== Example for [:class_name] - option
20
+ # GET /posts/123.json delivers following response body:
21
+ # {
22
+ # title: "ActiveResource now has associations",
23
+ # body: "Lorem Ipsum"
24
+ # comments: [
25
+ # {
26
+ # content: "..."
27
+ # },
28
+ # {
29
+ # content: "..."
30
+ # }
31
+ # ]
32
+ # }
33
+ # ====
34
+ #
35
+ # <tt>has_many :comments, :class_name => 'myblog/comment'</tt>
36
+ # Would resolve those comments into the <tt>Myblog::Comment</tt> class.
37
+ #
38
+ # If the response body does not contain an attribute matching the association name
39
+ # a request sent to the index action under the current resource.
40
+ # For the example above, if the comments are not present the requested path would be:
41
+ # GET /posts/123/comments.xml
42
+ def has_many(name, options = {})
43
+ Builder::HasMany.build(self, name, options)
44
+ end
45
+
46
+ # Specifies a one-to-one association.
47
+ #
48
+ # === Options
49
+ # [:class_name]
50
+ # Specify the class name of the association. This class name would
51
+ # be used for resolving the association class.
52
+ #
53
+ # ==== Example for [:class_name] - option
54
+ # GET /posts/1.json delivers following response body:
55
+ # {
56
+ # title: "ActiveResource now has associations",
57
+ # body: "Lorem Ipsum",
58
+ # author: {
59
+ # name: "Gabby Blogger",
60
+ # }
61
+ # }
62
+ # ====
63
+ #
64
+ # <tt>has_one :author, :class_name => 'myblog/author'</tt>
65
+ # Would resolve this author into the <tt>Myblog::Author</tt> class.
66
+ #
67
+ # If the response body does not contain an attribute matching the association name
68
+ # a request is sent to a singelton path under the current resource.
69
+ # For example, if a Product class <tt>has_one :inventory</tt> calling <tt>Product#inventory</tt>
70
+ # will generate a request on /product/:product_id/inventory.json.
71
+ #
72
+ def has_one(name, options = {})
73
+ Builder::HasOne.build(self, name, options)
74
+ end
75
+
76
+ # Specifies a one-to-one association with another class. This class should only be used
77
+ # if this class contains the foreign key.
78
+ #
79
+ # Methods will be added for retrieval and query for a single associated object, for which
80
+ # this object holds an id:
81
+ #
82
+ # [association(force_reload = false)]
83
+ # Returns the associated object. +nil+ is returned if the foreign key is +nil+.
84
+ # Throws a ActiveResource::ResourceNotFound exception if the foreign key is not +nil+
85
+ # and the resource is not found.
86
+ #
87
+ # (+association+ is replaced with the symbol passed as the first argument, so
88
+ # <tt>belongs_to :post</tt> would add among others <tt>post.nil?</tt>.
89
+ #
90
+ # === Example
91
+ #
92
+ # A Comment class declaress <tt>belongs_to :post</tt>, which will add:
93
+ # * <tt>Comment#post</tt> (similar to <tt>Post.find(post_id)</tt>)
94
+ # The declaration can also include an options hash to specialize the behavior of the association.
95
+ #
96
+ # === Options
97
+ # [:class_name]
98
+ # Specify the class name for the association. Use it only if that name canÄt be inferred from association name.
99
+ # So <tt>belongs_to :post</tt> will by default be linked to the Post class, but if the real class name is Article,
100
+ # you'll have to specify it with whis option.
101
+ # [:foreign_key]
102
+ # Specify the foreign key used for the association. By default this is guessed to be the name
103
+ # of the association with an "_id" suffix. So a class that defines a <tt>belongs_to :post</tt>
104
+ # association will use "post_id" as the default <tt>:foreign_key</tt>. Similarly,
105
+ # <tt>belongs_to :article, :class_name => "Post"</tt> will use a foreign key
106
+ # of "article_id".
107
+ #
108
+ # Option examples:
109
+ # <tt>belongs_to :customer, :class_name => 'User'</tt>
110
+ # Creates a belongs_to association called customer which is represented through the <tt>User</tt> class.
111
+ #
112
+ # <tt>belongs_to :customer, :foreign_key => 'user_id'</tt>
113
+ # Creates a belongs_to association called customer which would be resolved by the foreign_key <tt>user_id</tt> instead of <tt>customer_id</tt>
114
+ #
115
+ def belongs_to(name, options={})
116
+ Builder::BelongsTo.build(self, name, options)
117
+ end
118
+
119
+ # Defines the belongs_to association finder method
120
+ def defines_belongs_to_finder_method(method_name, association_model, finder_key)
121
+ ivar_name = :"@#{method_name}"
122
+
123
+ if method_defined?(method_name)
124
+ instance_variable_set(ivar_name, nil)
125
+ remove_method(method_name)
126
+ end
127
+
128
+ define_method(method_name) do
129
+ if instance_variable_defined?(ivar_name)
130
+ instance_variable_get(ivar_name)
131
+ elsif attributes.include?(method_name)
132
+ attributes[method_name]
133
+ elsif association_id = send(finder_key)
134
+ return nil if finder_key.blank?
135
+ instance_variable_set(ivar_name, association_model.find(association_id))
136
+ end
137
+ end
138
+
139
+ define_method("#{method_name}=") do |obj|
140
+ instance_variable_set(ivar_name, obj)
141
+ attributes["#{method_name}_id"] = obj.try(:id)
142
+ end
143
+ end
144
+
145
+ def defines_has_many_finder_method(method_name, association_model)
146
+ ivar_name = :"@#{method_name}"
147
+
148
+ define_method(method_name) do
149
+ if instance_variable_defined?(ivar_name)
150
+ instance_variable_get(ivar_name)
151
+ elsif attributes.include?(method_name)
152
+ attributes[method_name]
153
+ else
154
+ instance_variable_set(ivar_name, association_model.find(:all, :params => { :q => {:"#{self.class.element_name}_id" => self.id} }))
155
+ end
156
+ end
157
+ end
158
+
159
+ # Defines the has_one association
160
+ def defines_has_one_finder_method(method_name, association_model)
161
+ ivar_name = :"@#{method_name}"
162
+
163
+ define_method(method_name) do
164
+ if instance_variable_defined?(ivar_name)
165
+ instance_variable_get(ivar_name)
166
+ elsif attributes.include?(method_name)
167
+ attributes[method_name]
168
+ else
169
+ instance_variable_set(ivar_name, association_model.find(:params => { :q => { :"#{self.class.element_name}_id" => self.id} }))
170
+ end
171
+ end
172
+ end
173
+
174
+ end
@@ -0,0 +1,8 @@
1
+ require 'active_resource/active_resource'
2
+ require 'journey/version'
3
+ require 'journey/configuration'
4
+ require 'journey/configurable'
5
+ require 'journey/resource'
6
+
7
+ module Journey
8
+ end
@@ -0,0 +1,31 @@
1
+ require 'journey/configuration'
2
+ require 'logger'
3
+
4
+ module Journey
5
+ def self.configuration
6
+ @@configuration ||= Configuration.new
7
+ end
8
+
9
+ def self.configuration=(configuration)
10
+ @@configuration = configuration
11
+ @@configuration.propagate!
12
+ end
13
+
14
+ def self.configure(attributes = {})
15
+ configuration = Configuration.new(attributes)
16
+ yield(configuration) if block_given?
17
+ self.configuration = configuration
18
+ end
19
+
20
+ def self.logger=(logger)
21
+ @@logger = logger
22
+ ActiveResource::Base.logger = logger
23
+ end
24
+
25
+ def self.logger
26
+ @@logger
27
+ end
28
+
29
+ self.logger = Logger.new(STDOUT)
30
+ self.logger.level = Logger::WARN
31
+ end
@@ -0,0 +1,21 @@
1
+ require 'active_attr'
2
+ require 'journey/resource'
3
+
4
+ module Journey
5
+ class Configuration
6
+ include ActiveAttr::Attributes
7
+ include ActiveAttr::MassAssignment
8
+
9
+ attribute :api_site
10
+ attribute :api_user
11
+ attribute :api_password
12
+
13
+ def propagate!
14
+ (Resource.descendants << Resource).each do |r|
15
+ r.site = api_site
16
+ r.user = api_user
17
+ r.password = api_password
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ require 'active_resource/active_resource'
2
+ module Journey
3
+ class Resource < ActiveResource::Base
4
+ end
5
+ end
6
+
7
+ require 'journey/resource/api'
8
+ require 'journey/resource/attribute_loading'
9
+ require 'journey/resource/enums'
10
+ require 'journey/resource/queries'
11
+
12
+ class Journey::Resource
13
+ include API
14
+ include Queries
15
+ include Enums
16
+ include AttributeLoading
17
+ end
18
+
19
+
@@ -0,0 +1,13 @@
1
+ require 'active_support/concern'
2
+
3
+ module Journey::Resource::API
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ self.format = :json
8
+ self.include_root_in_json = true
9
+ # self.site = ENV['JOURNEY_API_ENDPOINT']
10
+ # self.user = ENV['JOURNEY_API_USERNAME']
11
+ # self.password = ENV['JOURNEY_API_KEY']
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ require 'active_support/concern'
2
+
3
+ module Journey::Resource::AttributeLoading
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ # uses defined setters in place of attributes[key] where possible,
8
+ # for the purpose of enums
9
+ def load(attributes, remove_root = false, persisted = false)
10
+ super(attributes, remove_root, persisted).tap do
11
+ attributes.each do |key, value|
12
+ send("#{key}=", value) if respond_to?("#{key}=")
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,34 @@
1
+ require 'active_support/concern'
2
+
3
+ module Journey::Resource::Enums
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ def self.enum(attr, collection=[])
8
+ collection_const_name = attr.to_s.pluralize.upcase.to_sym
9
+ const_set collection_const_name, collection.freeze
10
+ define_method "#{attr}_values" do
11
+ self.class.const_get(collection_const_name)
12
+ end
13
+
14
+ instance_eval do
15
+ attr_accessor :"#{attr}_index"
16
+ end
17
+
18
+ define_method attr do
19
+ value = attributes[attr.to_s].presence
20
+ if value.is_a?(Fixnum)
21
+ send("#{attr}_values")[value]
22
+ else
23
+ value
24
+ end
25
+ end
26
+
27
+ define_method "#{attr}=" do |value|
28
+ attributes[attr.to_s] = value.presence
29
+ end
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,14 @@
1
+ require 'active_support/concern'
2
+
3
+ module Journey::Resource::Queries
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ def self.where(clauses = {})
8
+ sort = clauses.delete(:sort)
9
+ params = { q: clauses }
10
+ params[:sort] = sort if sort
11
+ super(params)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ module Journey
2
+ module VERSION
3
+ MAJOR = 0
4
+ MINOR = 0
5
+ TINY = 4
6
+ PRE = nil
7
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
8
+ end
9
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ module Journey
4
+ describe "configurable" do
5
+ let(:api_site) { 'https://mysite.dev/' }
6
+
7
+ describe '.configure' do
8
+ it 'configures with a block' do
9
+ expect(Journey.configuration.api_site).not_to equal api_site
10
+ Journey.configure { |c| c.api_site = api_site }
11
+ expect(Journey.configuration.api_site).to equal api_site
12
+ end
13
+
14
+ it 'configures with a hash' do
15
+ expect(Journey.configuration.api_site).not_to equal api_site
16
+ Journey.configure({ api_site: api_site })
17
+ expect(Journey.configuration.api_site).to equal api_site
18
+ end
19
+ end
20
+
21
+ describe '.configuration=' do
22
+ it 'configures with a configuration object' do
23
+ expect(Journey.configuration.api_site).not_to equal api_site
24
+
25
+ configuration = Configuration.new(api_site: api_site)
26
+ Journey.configuration=(configuration)
27
+
28
+ expect(Journey.configuration.api_site).to equal api_site
29
+ end
30
+ end
31
+
32
+ describe '.logger=' do
33
+ it 'sets the logger for ActiveResource' do
34
+ logger = Logger.new(STDOUT)
35
+ Journey.logger = logger
36
+ expect(ActiveResource::Base.logger).to equal logger
37
+ expect(Journey.logger).to equal(logger)
38
+ end
39
+ end
40
+
41
+ describe '.logger' do
42
+ it 'returns a default logger if one isnt set' do
43
+ expect(Journey.logger).to_not be_nil
44
+ expect(Journey.logger).to respond_to(:info)
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ module Journey
4
+ class PrefixedResource < Resource
5
+ self.prefix = '/admin/'
6
+ end
7
+
8
+ describe Configuration do
9
+ let(:configuration) { Configuration.new }
10
+
11
+ it 'has nil defaults' do
12
+ expect(configuration.api_site).to be_nil
13
+ expect(configuration.api_user).to be_nil
14
+ expect(configuration.api_password).to be_nil
15
+ end
16
+
17
+ describe '#propagate!' do
18
+ it 'updates all descended records' do
19
+ configuration.api_site = 'https://custom.journeyapps.com/api/v1'
20
+ configuration.api_user = 'dan'
21
+ configuration.api_password = 'mellon'
22
+
23
+ [Resource, PrefixedResource].each do |klass|
24
+ expect(klass.site.to_s).not_to eq configuration.api_site
25
+ expect(klass.user).not_to eq configuration.api_user
26
+ expect(klass.password).not_to eq configuration.api_password
27
+ end
28
+
29
+ configuration.propagate!
30
+
31
+ [Resource, PrefixedResource].each do |klass|
32
+ expect(klass.site.to_s).to eq configuration.api_site
33
+ expect(klass.user).to eq configuration.api_user
34
+ expect(klass.password).to eq configuration.api_password
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe Journey::Resource do
4
+ let(:klass) do
5
+ Class.new(Journey::Resource) do
6
+ self.element_name = 'technician'
7
+ end
8
+ end
9
+
10
+ describe '::Enums' do
11
+ describe '.enum' do
12
+ let(:statuses) { %w(Active Inactive) }
13
+ before do
14
+ klass.enum :status, statuses
15
+ end
16
+
17
+ it 'stores the collection' do
18
+ expect(klass::STATUSES).to eq(statuses)
19
+ expect(klass.new.status_values).to eq(statuses)
20
+ end
21
+
22
+ it 'gets and sets enumerated attributes' do
23
+ r = klass.create(name: 'X', status: 'Inactive')
24
+ expect(r).to be_persisted
25
+ r.status = 'Active'
26
+ r.save
27
+ r.reload
28
+ expect(r.status).to eq('Active')
29
+ end
30
+
31
+ it 'sets nil attribute when receiving a blank value' do
32
+ r = klass.create(name: 'X', status: 'Inactive')
33
+ expect(r).to be_persisted
34
+ r.status = ''
35
+ r.save
36
+ r.reload
37
+ expect(r.status).to be_nil
38
+ end
39
+
40
+ it 'gets and sets enumerated attributes as a hash' do
41
+ r = klass.create(name: 'X', status: 'Inactive')
42
+ expect(r).to be_persisted
43
+ r.update_attributes(status: '')
44
+ r.save
45
+ r.reload
46
+ expect(r.status).to be_nil
47
+ end
48
+ end
49
+ end
50
+
51
+ describe '::Queries' do
52
+ describe '.where' do
53
+
54
+ it 'returns matching objects, sorted by attribute' do
55
+ klass.all.each(&:destroy)
56
+
57
+ klass.create(name: 'Z', status: 'Active')
58
+ klass.create(name: 'M', status: 'Inactive')
59
+ klass.create(name: 'A', status: 'Active')
60
+
61
+ collection = klass.where(status: 'Active', sort: { name: :asc })
62
+ expect(collection.map(&:name)).to eq %w[A Z]
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,19 @@
1
+ require 'pry'
2
+ require 'journey'
3
+
4
+ require 'dotenv'
5
+ Dotenv.load
6
+
7
+ Dir["spec/support/**/*.rb"].each { |f| require "./#{f}" }
8
+
9
+ RSpec.configure do |config|
10
+ config.filter_run :focus
11
+ config.run_all_when_everything_filtered = true
12
+ config.order = 'random'
13
+
14
+ config.before(:suite){ TestConfiguration.configure_for_test }
15
+
16
+ config.before(:each){ ConfigurationCache.pull }
17
+ config.after(:each){ ConfigurationCache.push }
18
+
19
+ end
@@ -0,0 +1,10 @@
1
+ module ConfigurationCache
2
+ def self.pull
3
+ @previous_config = Journey.configuration.clone
4
+ end
5
+
6
+ def self.push
7
+ Journey.configuration = @previous_config if @previous_config
8
+ end
9
+ end
10
+
@@ -0,0 +1,10 @@
1
+ module TestConfiguration
2
+ def self.configure_for_test
3
+ Journey.configure do |c|
4
+ c.api_site = ENV['JOURNEY_API_ENDPOINT']
5
+ c.api_user = ENV['JOURNEY_API_USERNAME']
6
+ c.api_password = ENV['JOURNEY_API_KEY']
7
+ end
8
+ binding.pry
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: embark-journey
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Dan Davey
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: active_attr
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.8.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: activeresource
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 4.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 4.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 10.1.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 10.1.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 3.0.0.beta1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 3.0.0.beta1
83
+ - !ruby/object:Gem::Dependency
84
+ name: dotenv
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 0.9.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 0.9.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 0.9.12.4
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 0.9.12.4
111
+ description: Extends ActiveResource to provide a base for Journey resources, supporting
112
+ all attribute types
113
+ email:
114
+ - dan@recombinary.com
115
+ executables: []
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - .gitignore
120
+ - .rspec
121
+ - .ruby-version
122
+ - CHANGELOG.md
123
+ - Gemfile
124
+ - LICENSE.txt
125
+ - README.md
126
+ - ROADMAP.md
127
+ - Rakefile
128
+ - journey.gemspec
129
+ - lib/active_resource/active_resource.rb
130
+ - lib/active_resource/associations.rb
131
+ - lib/journey.rb
132
+ - lib/journey/configurable.rb
133
+ - lib/journey/configuration.rb
134
+ - lib/journey/resource.rb
135
+ - lib/journey/resource/api.rb
136
+ - lib/journey/resource/attribute_loading.rb
137
+ - lib/journey/resource/enums.rb
138
+ - lib/journey/resource/queries.rb
139
+ - lib/journey/version.rb
140
+ - spec/models/journey/configurable_spec.rb
141
+ - spec/models/journey/configuration_spec.rb
142
+ - spec/models/journey/resource_spec.rb
143
+ - spec/spec_helper.rb
144
+ - spec/support/configuration_cache.rb
145
+ - spec/support/test_configuration.rb
146
+ homepage: ''
147
+ licenses:
148
+ - MIT
149
+ metadata: {}
150
+ post_install_message:
151
+ rdoc_options: []
152
+ require_paths:
153
+ - lib
154
+ required_ruby_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - '>='
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ requirements: []
165
+ rubyforge_project:
166
+ rubygems_version: 2.0.3
167
+ signing_key:
168
+ specification_version: 4
169
+ summary: Journey API wrapper for Ruby
170
+ test_files:
171
+ - spec/models/journey/configurable_spec.rb
172
+ - spec/models/journey/configuration_spec.rb
173
+ - spec/models/journey/resource_spec.rb
174
+ - spec/spec_helper.rb
175
+ - spec/support/configuration_cache.rb
176
+ - spec/support/test_configuration.rb