whereabouts 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +15 -0
- data/MIT-LICENSE +20 -0
- data/README.markdown +51 -0
- data/Rakefile +49 -0
- data/VERSION +1 -0
- data/lib/generators/address/USAGE +6 -0
- data/lib/generators/address/address_generator.rb +20 -0
- data/lib/generators/address/templates/address.rb +11 -0
- data/lib/generators/address/templates/create_addresses.rb +24 -0
- data/lib/whereabouts.rb +11 -0
- data/lib/whereabouts_methods.rb +119 -0
- data/spec/spec_helper.rb +58 -0
- data/spec/whereabouts_spec.rb +46 -0
- data/whereabouts.gemspec +69 -0
- metadata +139 -0
data/.document
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
source 'http://rubygems.org'
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem 'activesupport', '>= 2.3.5'
|
5
|
+
gem 'activerecord', '>= 3.0.0'
|
6
|
+
|
7
|
+
# Add dependencies to develop your gem here.
|
8
|
+
# Include everything needed to run rake, tests, features, etc.
|
9
|
+
group :development do
|
10
|
+
gem 'rspec', '~> 2.3.0'
|
11
|
+
gem 'bundler', '~> 1.0.0'
|
12
|
+
gem 'jeweler', '~> 1.6.2'
|
13
|
+
gem 'rcov', '>= 0'
|
14
|
+
gem 'sqlite3'
|
15
|
+
end
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Nicholas Fine
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
Whereabouts
|
2
|
+
===========
|
3
|
+
|
4
|
+
Whereabouts is a Rails plugin that generates a polymorphic address model
|
5
|
+
to be associated to ActiveRecord models.
|
6
|
+
|
7
|
+
To install on Rails 3.x add this to your Gemfile
|
8
|
+
gem 'whereabouts'
|
9
|
+
|
10
|
+
Generate the base address class and migration
|
11
|
+
rails g address
|
12
|
+
|
13
|
+
Run migrations
|
14
|
+
rake db:migrate
|
15
|
+
|
16
|
+
|
17
|
+
Examples
|
18
|
+
=======
|
19
|
+
|
20
|
+
# Basic use:
|
21
|
+
class Thing < ActiveRecord::Base
|
22
|
+
has_whereabouts
|
23
|
+
end
|
24
|
+
|
25
|
+
t = Thing.new
|
26
|
+
t.build_address
|
27
|
+
|
28
|
+
# Multiple addresses on same model:
|
29
|
+
class Foo < ActiveRecord::Base
|
30
|
+
has_whereabouts :shipping_address
|
31
|
+
has_whereabouts :mailing_address
|
32
|
+
end
|
33
|
+
|
34
|
+
f = Foo.new
|
35
|
+
f.build_shipping_address
|
36
|
+
f.build_mailing_address
|
37
|
+
|
38
|
+
Contributing to whereabouts
|
39
|
+
=========
|
40
|
+
|
41
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
42
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
43
|
+
* Fork the project
|
44
|
+
* Start a feature/bugfix branch
|
45
|
+
* Commit and push until you are happy with your contribution
|
46
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
47
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
48
|
+
|
49
|
+
Copyright (c) 2011 [Nicholas Fine](http://ndfine.com), released under the MIT license
|
50
|
+
v0.2.0
|
51
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "whereabouts"
|
18
|
+
gem.homepage = "http://github.com/yrgoldteeth/whereabouts"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %q{Whereabouts - has_whereabouts :address}
|
21
|
+
gem.description = %q{Rails plugin for adding associated addresses to Active Record Models}
|
22
|
+
gem.email = "nicholas.fine@gmail.com"
|
23
|
+
gem.authors = ["Nicholas Fine"]
|
24
|
+
# dependencies defined in Gemfile
|
25
|
+
end
|
26
|
+
Jeweler::RubygemsDotOrgTasks.new
|
27
|
+
|
28
|
+
require 'rspec/core'
|
29
|
+
require 'rspec/core/rake_task'
|
30
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
31
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
32
|
+
end
|
33
|
+
|
34
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
35
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
36
|
+
spec.rcov = true
|
37
|
+
end
|
38
|
+
|
39
|
+
task :default => :spec
|
40
|
+
|
41
|
+
require 'rake/rdoctask'
|
42
|
+
Rake::RDocTask.new do |rdoc|
|
43
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
44
|
+
|
45
|
+
rdoc.rdoc_dir = 'rdoc'
|
46
|
+
rdoc.title = "whereabouts #{version}"
|
47
|
+
rdoc.rdoc_files.include('README*')
|
48
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
49
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.5.1
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rails/generators/migration'
|
2
|
+
|
3
|
+
class AddressGenerator < Rails::Generators::Base
|
4
|
+
include Rails::Generators::Migration
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def source_root
|
8
|
+
@whereabouts_source_root ||= File.expand_path('../templates', __FILE__)
|
9
|
+
end
|
10
|
+
|
11
|
+
def next_migration_number path
|
12
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_model_file
|
17
|
+
template 'address.rb', 'app/models/address.rb'
|
18
|
+
migration_template 'create_addresses.rb', 'db/migrate/create_addresses.rb'
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class Address < ActiveRecord::Base
|
2
|
+
belongs_to :addressable, :polymorphic => true
|
3
|
+
ZIP_REGEX = /^\d{5}([\-]\d{4})?$/
|
4
|
+
|
5
|
+
validates_format_of :zip, :with => ZIP_REGEX, :message => 'is invalid'
|
6
|
+
|
7
|
+
def geocode_address
|
8
|
+
"#{line1}, #{city} #{state} #{zip}"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class CreateAddresses < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :addresses do |t|
|
4
|
+
t.string :line1
|
5
|
+
t.string :line2
|
6
|
+
t.string :city
|
7
|
+
t.string :state
|
8
|
+
t.string :zip
|
9
|
+
t.string :type
|
10
|
+
t.float :latitude
|
11
|
+
t.float :longitude
|
12
|
+
t.references :addressable, :polymorphic => true
|
13
|
+
t.timestamps
|
14
|
+
end
|
15
|
+
|
16
|
+
add_index :addresses, :addressable_type
|
17
|
+
add_index :addresses, :addressable_id
|
18
|
+
add_index :addresses, :type
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.down
|
22
|
+
drop_table :addresses
|
23
|
+
end
|
24
|
+
end
|
data/lib/whereabouts.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# Whereabouts
|
2
|
+
require 'whereabouts_methods'
|
3
|
+
module Whereabouts
|
4
|
+
module Rails
|
5
|
+
class Railtie < ::Rails::Railtie
|
6
|
+
unless File.exist?('app/models/address.rb')
|
7
|
+
puts 'NOTICE: Please run rails generate address for whereabouts gem'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# **Whereabouts** is a Rails plugin that generates a polymorphic, inheritable
|
2
|
+
# Address model. Install it as a Rails plugin (Rails 3.x+ required)
|
3
|
+
#
|
4
|
+
# rails plugin install http://github.com/yrgoldteeth/whereabouts.git
|
5
|
+
#
|
6
|
+
# The most simple use case creates a has_one relationship with
|
7
|
+
# a generic Address:
|
8
|
+
#
|
9
|
+
# class Foo < ActiveRecord::Base
|
10
|
+
# has_whereabouts
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# f = Foo.new
|
14
|
+
# f.build_address
|
15
|
+
#
|
16
|
+
# Also, a model can have any number of different inherited types of Addresses,
|
17
|
+
# i.e. shipping address and mailing address
|
18
|
+
#
|
19
|
+
# class Foo < ActiveRecord::Base
|
20
|
+
# has_whereabouts :shipping
|
21
|
+
# has_whereabouts :mailing
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# f = Foo.new
|
25
|
+
# f.build_shipping
|
26
|
+
# f.build_mailing
|
27
|
+
#
|
28
|
+
# If you have the [Ruby Geocoder](http://www.rubygeocoder.com) specified in
|
29
|
+
# your project's Gemfile, adding {:geocode => true} to the has_whereabouts
|
30
|
+
# definition will automatically geocode and populate the latitude and
|
31
|
+
# longitude fields for the record.
|
32
|
+
#
|
33
|
+
# class Foo < ActiveRecord::Base
|
34
|
+
# has_whereabouts :shipping, {:geocode => true}
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# You can see the source on [github](https://github.com/yrgoldteeth/whereabouts), and
|
38
|
+
# this page was generated with the wonderful
|
39
|
+
# [rocco](http://rtomayko.github.com/rocco/) documentation generator.
|
40
|
+
|
41
|
+
# Hey, that's [me](http://ndfine.com)
|
42
|
+
module Yrgoldteeth
|
43
|
+
# **Whereabouts**
|
44
|
+
module Has
|
45
|
+
module Whereabouts
|
46
|
+
|
47
|
+
# Extend the ClassMethods module
|
48
|
+
def self.included(base)
|
49
|
+
base.extend ClassMethods
|
50
|
+
end
|
51
|
+
|
52
|
+
# **ClassMethods**
|
53
|
+
module ClassMethods
|
54
|
+
# Accepts a symbol that will define the inherited
|
55
|
+
# type of Address. Defaults to the parent class.
|
56
|
+
def has_whereabouts klass=:address, options={}
|
57
|
+
# extend Address with class name if not defined.
|
58
|
+
unless Class.constants.include?(klass.to_s.camelize.to_sym)
|
59
|
+
create_address_class(klass.to_s.camelize)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Set the has_one relationship and accepts_nested_attributes_for.
|
63
|
+
has_one klass, :as => :addressable, :dependent => :destroy
|
64
|
+
accepts_nested_attributes_for klass
|
65
|
+
|
66
|
+
# Define a singleton on the class that returns an array
|
67
|
+
# that includes the address fields to validate presence of
|
68
|
+
# or an empty array
|
69
|
+
validate_singleton = "#{klass.to_s}_whereabouts_validate_fields".to_sym
|
70
|
+
if options[:validate] && options[:validate].is_a?(Array)
|
71
|
+
set_validators(klass, options[:validate])
|
72
|
+
define_singleton_method validate_singleton do options[:validate] end
|
73
|
+
else
|
74
|
+
define_singleton_method validate_singleton do [] end
|
75
|
+
end
|
76
|
+
|
77
|
+
# Check for geocode in options and confirm geocoder is defined.
|
78
|
+
# Also defines a singleton to return a boolean about geocoding.
|
79
|
+
geocode_singleton = "#{klass.to_s}_whereabouts_geocode?".to_sym
|
80
|
+
if options[:geocode] && options[:geocode] == true && defined?(Geocoder)
|
81
|
+
set_geocoding(klass)
|
82
|
+
define_singleton_method geocode_singleton do true end
|
83
|
+
else
|
84
|
+
define_singleton_method geocode_singleton do false end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# Sets validates_presence_of fields for the Address based on the
|
89
|
+
# singleton method created on the Address addressable_type class.
|
90
|
+
def set_validators klass, fields=[]
|
91
|
+
_single = "#{klass.to_s}_whereabouts_validate_fields".to_sym
|
92
|
+
klass.to_s.camelize.constantize.class_eval do
|
93
|
+
fields.each do |f|
|
94
|
+
validates_presence_of f, :if => lambda {|a| a.addressable_type.constantize.send(_single).include?(f)}
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# If defined, geocode the address.
|
100
|
+
def set_geocoding klass
|
101
|
+
_single = "#{klass.to_s}_whereabouts_geocode?".to_sym
|
102
|
+
klass.to_s.camelize.constantize.class_eval do
|
103
|
+
geocoded_by :geocode_address
|
104
|
+
after_validation :geocode, :if => lambda {|a| a.addressable_type.constantize.send(_single) && (a.new_record? || a.changed?)}
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
# Generate a new class using Address as the superclass.
|
109
|
+
# Accepts a string defining the inherited type.
|
110
|
+
def create_address_class(class_name, &block)
|
111
|
+
klass = Class.new Address, &block
|
112
|
+
Object.const_set class_name, klass
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
# Include the modules into ActiveRecord::Base
|
119
|
+
ActiveRecord::Base.send(:include, Yrgoldteeth::Has::Whereabouts)
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'rspec'
|
4
|
+
require 'active_record'
|
5
|
+
require 'whereabouts_methods'
|
6
|
+
|
7
|
+
# Requires supporting files with custom matchers and macros, etc,
|
8
|
+
# in ./support/ and its subdirectories.
|
9
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
10
|
+
|
11
|
+
# Build some dummy AR classes
|
12
|
+
|
13
|
+
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
|
14
|
+
|
15
|
+
def setup_test_db
|
16
|
+
ActiveRecord::Schema.define(:version => 1) do
|
17
|
+
create_table :addresses do |t|
|
18
|
+
t.string :line1
|
19
|
+
t.string :line2
|
20
|
+
t.string :city
|
21
|
+
t.string :state
|
22
|
+
t.string :zip
|
23
|
+
t.string :type
|
24
|
+
t.float :latitude
|
25
|
+
t.float :longitude
|
26
|
+
t.references :addressable, :polymorphic => true
|
27
|
+
t.timestamps
|
28
|
+
end
|
29
|
+
create_table :customers do |t|
|
30
|
+
t.timestamps
|
31
|
+
end
|
32
|
+
create_table :competitors do |t|
|
33
|
+
t.timestamps
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def teardown_test_db
|
39
|
+
ActiveRecord::Base.connection.tables.each do |t|
|
40
|
+
ActiveRecord::Base.connection.drop_table(t)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class Address < ActiveRecord::Base
|
45
|
+
belongs_to :addressable, :polymorphic => true
|
46
|
+
end
|
47
|
+
|
48
|
+
class Customer < ActiveRecord::Base
|
49
|
+
has_whereabouts :address
|
50
|
+
has_whereabouts :test_address, :validate => [:line1, :city, :state, :zip]
|
51
|
+
end
|
52
|
+
|
53
|
+
class Competitor < ActiveRecord::Base
|
54
|
+
has_whereabouts :test_address, :validate => [:city, :state, :zip]
|
55
|
+
end
|
56
|
+
|
57
|
+
RSpec.configure do |config|
|
58
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "Whereabouts" do
|
4
|
+
before(:all){setup_test_db};after(:all){teardown_test_db}
|
5
|
+
|
6
|
+
describe 'AR model Customer has_whereabouts :address and has_whereabouts :test_address with validation fields' do
|
7
|
+
|
8
|
+
it 'sets a singleton method for address_whereabouts_validate_fields' do
|
9
|
+
Customer.singleton_methods.include?(:address_whereabouts_validate_fields).should be true
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'sets a singleton method for test_address_whereabouts_validate_fields' do
|
13
|
+
Customer.singleton_methods.include?(:test_address_whereabouts_validate_fields).should be true
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'sets a singleton method for address_whereabouts_geocode?' do
|
17
|
+
Customer.singleton_methods.include?(:address_whereabouts_geocode?).should be true
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'sets a singleton method for test_address_whereabouts_geocode?' do
|
21
|
+
Customer.singleton_methods.include?(:test_address_whereabouts_geocode?).should be true
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns [] on the singleton method if no list of attributes is sent for the :validate options' do
|
25
|
+
Customer.address_whereabouts_validate_fields.should == []
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns true on the singleton method if a list of attributes is sent for the :validate options' do
|
29
|
+
Customer.test_address_whereabouts_validate_fields.should == [:line1, :city, :state, :zip]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'multiple AR models have the same whereabouts name with different validations' do
|
34
|
+
before do
|
35
|
+
address = {:city => 'Birmingham', :state => 'AL', :zip => '35205'}
|
36
|
+
@competitor_test = Competitor.new.build_test_address(address)
|
37
|
+
@customer_test = Customer.new.build_test_address(address)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'validates correctly' do
|
41
|
+
@competitor_test.valid?.should be true
|
42
|
+
@customer_test.valid?.should be false
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/whereabouts.gemspec
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{whereabouts}
|
8
|
+
s.version = "0.5.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Nicholas Fine"]
|
12
|
+
s.date = %q{2011-06-16}
|
13
|
+
s.description = %q{Rails plugin for adding associated addresses to Active Record Models}
|
14
|
+
s.email = %q{nicholas.fine@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.markdown"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".document",
|
20
|
+
".rspec",
|
21
|
+
"Gemfile",
|
22
|
+
"MIT-LICENSE",
|
23
|
+
"README.markdown",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/generators/address/USAGE",
|
27
|
+
"lib/generators/address/address_generator.rb",
|
28
|
+
"lib/generators/address/templates/address.rb",
|
29
|
+
"lib/generators/address/templates/create_addresses.rb",
|
30
|
+
"lib/whereabouts.rb",
|
31
|
+
"lib/whereabouts_methods.rb",
|
32
|
+
"spec/spec_helper.rb",
|
33
|
+
"spec/whereabouts_spec.rb",
|
34
|
+
"whereabouts.gemspec"
|
35
|
+
]
|
36
|
+
s.homepage = %q{http://github.com/yrgoldteeth/whereabouts}
|
37
|
+
s.licenses = ["MIT"]
|
38
|
+
s.require_paths = ["lib"]
|
39
|
+
s.rubygems_version = %q{1.6.2}
|
40
|
+
s.summary = %q{Whereabouts - has_whereabouts :address}
|
41
|
+
|
42
|
+
if s.respond_to? :specification_version then
|
43
|
+
s.specification_version = 3
|
44
|
+
|
45
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
+
s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0"])
|
47
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
48
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
49
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
|
50
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
51
|
+
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
52
|
+
else
|
53
|
+
s.add_dependency(%q<activerecord>, [">= 3.0.0"])
|
54
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
55
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
56
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
57
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
58
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
59
|
+
end
|
60
|
+
else
|
61
|
+
s.add_dependency(%q<activerecord>, [">= 3.0.0"])
|
62
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
63
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
64
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
65
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
66
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
metadata
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: whereabouts
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.5.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Nicholas Fine
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-06-16 00:00:00 -05:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: activerecord
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 3.0.0
|
24
|
+
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 2.3.0
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: bundler
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.0.0
|
46
|
+
type: :development
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: jeweler
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ~>
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 1.6.2
|
57
|
+
type: :development
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *id004
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: rcov
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *id005
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: sqlite3
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *id006
|
82
|
+
description: Rails plugin for adding associated addresses to Active Record Models
|
83
|
+
email: nicholas.fine@gmail.com
|
84
|
+
executables: []
|
85
|
+
|
86
|
+
extensions: []
|
87
|
+
|
88
|
+
extra_rdoc_files:
|
89
|
+
- README.markdown
|
90
|
+
files:
|
91
|
+
- .document
|
92
|
+
- .rspec
|
93
|
+
- Gemfile
|
94
|
+
- MIT-LICENSE
|
95
|
+
- README.markdown
|
96
|
+
- Rakefile
|
97
|
+
- VERSION
|
98
|
+
- lib/generators/address/USAGE
|
99
|
+
- lib/generators/address/address_generator.rb
|
100
|
+
- lib/generators/address/templates/address.rb
|
101
|
+
- lib/generators/address/templates/create_addresses.rb
|
102
|
+
- lib/whereabouts.rb
|
103
|
+
- lib/whereabouts_methods.rb
|
104
|
+
- spec/spec_helper.rb
|
105
|
+
- spec/whereabouts_spec.rb
|
106
|
+
- whereabouts.gemspec
|
107
|
+
has_rdoc: true
|
108
|
+
homepage: http://github.com/yrgoldteeth/whereabouts
|
109
|
+
licenses:
|
110
|
+
- MIT
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
|
114
|
+
require_paths:
|
115
|
+
- lib
|
116
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
hash: 927639709
|
122
|
+
segments:
|
123
|
+
- 0
|
124
|
+
version: "0"
|
125
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: "0"
|
131
|
+
requirements: []
|
132
|
+
|
133
|
+
rubyforge_project:
|
134
|
+
rubygems_version: 1.6.2
|
135
|
+
signing_key:
|
136
|
+
specification_version: 3
|
137
|
+
summary: Whereabouts - has_whereabouts :address
|
138
|
+
test_files: []
|
139
|
+
|