looky-lu 0.0.1 → 0.0.2

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTcyZjU5ZDgyZWQ0MjYxMmYzMDI3YjgxNTk2ZTRjNWY3ZDE5Mjc4Ng==
4
+ N2RkZTA3N2Q3YzI0YzcxMzg0NGUwMDUyYTViMTg1YTAzMmNkZmY3Yg==
5
5
  data.tar.gz: !binary |-
6
- NjgyZjIwZDFiMTliNWJmNjNhMDgxNmFmMGNlNTFkOGY5MjliZDg2Mg==
6
+ ZjlmNmMzNWQxNmZkMTFmOTQxNTJkYjRkZGI4YmJhODEyZGExMTMzZA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NjExYzczOTRhOTE2MjA4MmUzNmY5MTJkMDQyYzA5NGFjMWI5MDVhZTJmM2Y5
10
- NTQzZmE2ZjAxYzgzMDU2ZWY4ZTAxMTQ1YTczYmQ3NTE4ZThiNzhjZjA4ZmIw
11
- MzdiODY1ZWUyYjFlZmQwNWUyYWViMDMxNzZlZTY1N2MyN2MyZmE=
9
+ NDU4ZGNlMTU0NzZiM2UzOTM2NGFlNTZmMTZjYjIwMTRiYzMzMDI5MmY1NDNk
10
+ MTMxNWZhNDc2MjU5NzU4NzQ1ZTZjMmI4NWVlZjA1NTZmZTI2YTY0N2RkMzQ4
11
+ ZWU2NTNlNWJmYzgyYTRiNTY0MzhmNjJjNGRjZjZiMDE4NDZjODQ=
12
12
  data.tar.gz: !binary |-
13
- YjE3MWIwNjFmNDZmNDBhYjdlNWFmZGYyYzc4MjI5M2UwYzc5NzNiNjk3ZjEx
14
- NTI0MDFjM2NhOTFhMmU0Y2ZlNTJmODhlYWFmMWNjNDVkODJmZmRkMjkyZDJm
15
- NTFkY2M3OWQwZmUxNjYxYmFkMThiOTc1ZTA0Zjg4NjYxOTFmYjk=
13
+ ZTVkMzgyN2Q1NWM2MGI2NzU0NWU1MDNjMTM1NGZlNDAzMzZmMjNiYzVmYzg2
14
+ NmIzMjNmZjhhOWE3ZDM0Y2Y0N2Y5NmQ4NDZiOTAxNjZmMDMzZTIzNmVmOTgy
15
+ OGRkODg4MDQ0NmRmMDU4ZmFkMmZmODk2MTk3OThhM2MyMTg1NWM=
data/README.md CHANGED
@@ -2,32 +2,58 @@
2
2
  [![Coverage Status](https://coveralls.io/repos/agapered/looky-lu/badge.png?branch=master)](https://coveralls.io/r/agapered/looky-lu?branch=master)
3
3
 
4
4
 
5
- ## What is it? ##
6
-
7
- looky-lu will generate standard look up data abilities for your rails application
8
-
9
5
  ## What is it for? ##
10
6
 
11
- Recently we went through the pain of having to create a look up table for the different states in the United States.
7
+ LookyLu gives you easy ability to generate an ActiveRecord object for lookup data, as well as the ability to populate that object with data.
12
8
 
13
- This gem will allow you to easily add that kind of data to your project
9
+ For example, you need a State object that is an LU table for all of the states in the United States, then this gem is perfect for you.
14
10
 
15
11
  ## How to use it ##
16
12
 
17
- To create and populate a State model object
13
+ Using my example above of needing a State object:
18
14
 
15
+ Install LookyLu
16
+ ```
17
+ gem install looky-lu
18
+ ```
19
+ Or add to your gemfile
20
+ ```
21
+ gem 'looky-lu'
22
+ ```
23
+
24
+ Generate the ActiveRecord model and the needed migration
19
25
  ```
20
26
  rails g lookylu:state
27
+ ```
28
+
29
+ Migrate your database
30
+ ```
21
31
  rake db:migrate
22
- rails g lookylu:state_data State
32
+ ```
33
+
34
+ Populate the database with the 50 stats plus D.C.
35
+ ```
36
+ rails g lookylu:state_data State united_states
23
37
  ```
24
38
 
25
39
  ## Additional Options ##
26
40
 
41
+ For generating the Model and migration
27
42
  ```
28
43
  rails g lookylu:state -h
29
44
  ```
30
45
 
46
+ For generating the LU data
47
+ ```
48
+ rails g lookylu:state_data -h
49
+ ```
50
+
51
+ ## Current LU Data Available ##
52
+
53
+ * State
54
+ * United States
55
+ * Canada
56
+
31
57
 
32
58
  ## Who are you? ##
33
59
 
@@ -1,60 +1,22 @@
1
1
  module LookyLu
2
2
  class States
3
3
 
4
- def self.united_states
5
- [
6
- {name: 'Alabama', abbreviation: 'AL'},
7
- {name: 'Alaska', abbreviation: 'AK'},
8
- {name: 'Arizona', abbreviation: 'AZ'},
9
- {name: 'Arkansas', abbreviation: 'AR'},
10
- {name: 'California', abbreviation: 'CA'},
11
- {name: 'Colorado', abbreviation: 'CO'},
12
- {name: 'Connecticut', abbreviation: 'CT'},
13
- {name: 'Delaware', abbreviation: 'DE'},
14
- {name: 'District of Columbia', abbreviation: 'DC'},
15
- {name: 'Florida', abbreviation: 'FL'},
16
- {name: 'Georgia', abbreviation: 'GA'},
17
- {name: 'Hawaii', abbreviation: 'HI'},
18
- {name: 'Idaho', abbreviation: 'ID'},
19
- {name: 'Illinois', abbreviation: 'IL'},
20
- {name: 'Indiana', abbreviation: 'IN'},
21
- {name: 'Iowa', abbreviation: 'IA'},
22
- {name: 'Kansas', abbreviation: 'KS'},
23
- {name: 'Kentucky', abbreviation: 'KY'},
24
- {name: 'Louisiana', abbreviation: 'LA'},
25
- {name: 'Maine', abbreviation: 'ME'},
26
- {name: 'Maryland', abbreviation: 'MD'},
27
- {name: 'Massachusetts', abbreviation: 'MA'},
28
- {name: 'Michigan', abbreviation: 'MI'},
29
- {name: 'Minnesota', abbreviation: 'MN'},
30
- {name: 'Mississippi', abbreviation: 'MS'},
31
- {name: 'Missouri', abbreviation: 'MO'},
32
- {name: 'Montana', abbreviation: 'MT'},
33
- {name: 'Nebraska', abbreviation: 'NE'},
34
- {name: 'Nevada', abbreviation: 'NV'},
35
- {name: 'New Hampshire', abbreviation: 'NH'},
36
- {name: 'New Jersey', abbreviation: 'NJ'},
37
- {name: 'New Mexico', abbreviation: 'NM'},
38
- {name: 'New York', abbreviation: 'NY'},
39
- {name: 'North Carolina', abbreviation: 'NC'},
40
- {name: 'North Dakota', abbreviation: 'ND'},
41
- {name: 'Ohio', abbreviation: 'OH'},
42
- {name: 'Oklahoma', abbreviation: 'OK'},
43
- {name: 'Oregon', abbreviation: 'OR'},
44
- {name: 'Pennsylvania', abbreviation: 'PA'},
45
- {name: 'Rhode Island', abbreviation: 'RI'},
46
- {name: 'South Carolina', abbreviation: 'SC'},
47
- {name: 'South Dakota', abbreviation: 'SD'},
48
- {name: 'Tennessee', abbreviation: 'TN'},
49
- {name: 'Texas', abbreviation: 'TX'},
50
- {name: 'Utah', abbreviation: 'UT'},
51
- {name: 'Vermont', abbreviation: 'VT'},
52
- {name: 'Virginia', abbreviation: 'VA'},
53
- {name: 'Washington', abbreviation: 'WA'},
54
- {name: 'West Virginia', abbreviation: 'WV'},
55
- {name: 'Wisconsin', abbreviation: 'WI'},
56
- {name: 'Wyoming', abbreviation: 'WY'}
57
- ]
4
+ def self.from_country(country_name)
5
+
6
+ yml = YAML.load_file(File.dirname(__FILE__) + "/states.yml")
7
+
8
+ if country_name == 'all'
9
+ states = []
10
+
11
+ yml.each do |k,v|
12
+ states += v
13
+ end
14
+
15
+ else
16
+ states = yml[country_name]
17
+ end
18
+
19
+ states
58
20
  end
59
21
 
60
22
  end
@@ -0,0 +1,66 @@
1
+ united_states: [
2
+ {name: 'Alabama', abbreviation: 'AL'},
3
+ {name: 'Alaska', abbreviation: 'AK'},
4
+ {name: 'Arizona', abbreviation: 'AZ'},
5
+ {name: 'Arkansas', abbreviation: 'AR'},
6
+ {name: 'California', abbreviation: 'CA'},
7
+ {name: 'Colorado', abbreviation: 'CO'},
8
+ {name: 'Connecticut', abbreviation: 'CT'},
9
+ {name: 'Delaware', abbreviation: 'DE'},
10
+ {name: 'District of Columbia', abbreviation: 'DC'},
11
+ {name: 'Florida', abbreviation: 'FL'},
12
+ {name: 'Georgia', abbreviation: 'GA'},
13
+ {name: 'Hawaii', abbreviation: 'HI'},
14
+ {name: 'Idaho', abbreviation: 'ID'},
15
+ {name: 'Illinois', abbreviation: 'IL'},
16
+ {name: 'Indiana', abbreviation: 'IN'},
17
+ {name: 'Iowa', abbreviation: 'IA'},
18
+ {name: 'Kansas', abbreviation: 'KS'},
19
+ {name: 'Kentucky', abbreviation: 'KY'},
20
+ {name: 'Louisiana', abbreviation: 'LA'},
21
+ {name: 'Maine', abbreviation: 'ME'},
22
+ {name: 'Maryland', abbreviation: 'MD'},
23
+ {name: 'Massachusetts', abbreviation: 'MA'},
24
+ {name: 'Michigan', abbreviation: 'MI'},
25
+ {name: 'Minnesota', abbreviation: 'MN'},
26
+ {name: 'Mississippi', abbreviation: 'MS'},
27
+ {name: 'Missouri', abbreviation: 'MO'},
28
+ {name: 'Montana', abbreviation: 'MT'},
29
+ {name: 'Nebraska', abbreviation: 'NE'},
30
+ {name: 'Nevada', abbreviation: 'NV'},
31
+ {name: 'New Hampshire', abbreviation: 'NH'},
32
+ {name: 'New Jersey', abbreviation: 'NJ'},
33
+ {name: 'New Mexico', abbreviation: 'NM'},
34
+ {name: 'New York', abbreviation: 'NY'},
35
+ {name: 'North Carolina', abbreviation: 'NC'},
36
+ {name: 'North Dakota', abbreviation: 'ND'},
37
+ {name: 'Ohio', abbreviation: 'OH'},
38
+ {name: 'Oklahoma', abbreviation: 'OK'},
39
+ {name: 'Oregon', abbreviation: 'OR'},
40
+ {name: 'Pennsylvania', abbreviation: 'PA'},
41
+ {name: 'Rhode Island', abbreviation: 'RI'},
42
+ {name: 'South Carolina', abbreviation: 'SC'},
43
+ {name: 'South Dakota', abbreviation: 'SD'},
44
+ {name: 'Tennessee', abbreviation: 'TN'},
45
+ {name: 'Texas', abbreviation: 'TX'},
46
+ {name: 'Utah', abbreviation: 'UT'},
47
+ {name: 'Vermont', abbreviation: 'VT'},
48
+ {name: 'Virginia', abbreviation: 'VA'},
49
+ {name: 'Washington', abbreviation: 'WA'},
50
+ {name: 'West Virginia', abbreviation: 'WV'},
51
+ {name: 'Wisconsin', abbreviation: 'WI'},
52
+ {name: 'Wyoming', abbreviation: 'WY'}
53
+ ]
54
+
55
+ canada: [
56
+ {name: 'Alberta', abbreviation: 'AB'},
57
+ {name: 'British Columbia', abbreviation: 'BC'},
58
+ {name: 'Manitoba', abbreviation: 'MB'},
59
+ {name: 'New Brunswick', abbreviation: 'NB'},
60
+ {name: 'Newfoundland and Labrador', abbreviation: 'NL'},
61
+ {name: 'Nova Scotia', abbreviation: 'NS'},
62
+ {name: 'Ontario', abbreviation: 'ON'},
63
+ {name: 'Prince Edward Island', abbreviation: 'PE'},
64
+ {name: 'Quebec', abbreviation: 'QC'},
65
+ {name: 'Saskatchewan', abbreviation: 'SK'}
66
+ ]
@@ -4,6 +4,7 @@ require 'generators/lookylu/base_generator'
4
4
  module Lookylu
5
5
  module Generators
6
6
  class StateDataGenerator < Lookylu::Generators::BaseGenerator
7
+ class_option :country_name, type: :string, default: 'united_states', desc: "Choose a country: united_states, canada, or all."
7
8
 
8
9
  def populate_data
9
10
  connect_to_db
@@ -11,10 +12,12 @@ module Lookylu
11
12
  raise "Table #{plural_name} does not exist. Please build the needed migration and migrate your database"
12
13
  end
13
14
  begin
14
- class_object = eval(object_name)
15
- LookyLu::States.united_states.each do |data|
16
- class_object.where(data).first_or_create
15
+ class_object = eval(object_name.capitalize)
16
+
17
+ LookyLu::States.from_country(options.country_name).each do |data|
18
+ class_object.where(data).first_or_create
17
19
  end
20
+
18
21
  puts "There are now #{pluralize(class_object.count, model_name)}"
19
22
  rescue => e
20
23
  raise "Could not find object for #{model_name}"
@@ -24,13 +27,13 @@ module Lookylu
24
27
 
25
28
  private
26
29
 
27
- def connect_to_db
28
- ActiveRecord::Base.establish_connection db_config
29
- end
30
+ def connect_to_db
31
+ ActiveRecord::Base.establish_connection db_config
32
+ end
30
33
 
31
- def db_config
32
- Rails.configuration.database_configuration[::Rails.env]
33
- end
34
+ def db_config
35
+ Rails.configuration.database_configuration[::Rails.env]
36
+ end
34
37
 
35
38
  end
36
39
  end
@@ -9,7 +9,6 @@ module Lookylu
9
9
 
10
10
  class_option :model, :type => :boolean, :default => true, :desc => "Generate a default model object."
11
11
 
12
-
13
12
  def generate_migration
14
13
  if Dir.glob(migration_location('*')).empty?
15
14
  template "states_migration.erb", migration_location(next_migration_number)
@@ -26,17 +25,17 @@ module Lookylu
26
25
 
27
26
  private
28
27
 
29
- def next_migration_number
30
- Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
31
- end
28
+ def next_migration_number
29
+ Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
30
+ end
32
31
 
33
- def migration_location version
34
- "db/migrate/#{version}_lookylu_create_#{plural_name}.rb"
35
- end
32
+ def migration_location version
33
+ "db/migrate/#{version}_lookylu_create_#{plural_name}.rb"
34
+ end
36
35
 
37
- def model_location
38
- "app/models/#{model_name}.rb"
39
- end
36
+ def model_location
37
+ "app/models/#{model_name}.rb"
38
+ end
40
39
 
41
40
  end
42
41
  end
@@ -1,3 +1,3 @@
1
1
  module LookyLu
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'data/lu/states'
3
+
4
+ describe LookyLu::States do
5
+
6
+ describe 'from country' do
7
+
8
+ it 'should pull only united states' do
9
+ LookyLu::States.from_country('united_states').count.should == 51
10
+ end
11
+
12
+ it 'should pull only canada' do
13
+ LookyLu::States.from_country('canada').count.should == 10
14
+ end
15
+
16
+ it 'should pull all' do
17
+ LookyLu::States.from_country('all').count.should == 61
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -38,10 +38,11 @@ describe Lookylu::Generators::StateDataGenerator do
38
38
  end
39
39
 
40
40
  it 'should add object data' do
41
- Object.any_instance.should_receive(:puts).with("There are now #{@gen.pluralize(LookyLu::States.united_states.count, @gen.plural_model_name)}")
41
+ Object.any_instance.should_receive(:puts).with("There are now #{@gen.pluralize(LookyLu::States.from_country('united_states').count, @gen.plural_model_name)}")
42
42
 
43
+ @gen.options.country_name = 'united_states'
43
44
  @gen.populate_data
44
- State.count.should == LookyLu::States.united_states.count
45
+ State.count.should == LookyLu::States.from_country('united_states').count
45
46
  end
46
47
 
47
48
  it 'should not fail if object does not exist' do
@@ -6,7 +6,7 @@ describe State do
6
6
 
7
7
  describe 'scopes' do
8
8
  before(:each) do
9
- LookyLu::States.united_states.take(10).each do |s|
9
+ LookyLu::States.from_country('united_states').take(10).each do |s|
10
10
  State.where(s).first_or_create
11
11
  end
12
12
  end
@@ -18,11 +18,6 @@ require 'rails/all'
18
18
  require 'rails/generators'
19
19
  require "rails/test_help"
20
20
 
21
-
22
- ActiveRecord::Base.establish_connection(YAML.load_file("spec/support/database.yml")[ENV['RAILS_ENV']])
23
- load 'spec/support/schema.rb'
24
-
25
-
26
21
  if ENV['RCOV'] == 'true'
27
22
  require 'simplecov-rcov'
28
23
  SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
@@ -53,3 +48,7 @@ RSpec.configure do |config|
53
48
  end
54
49
 
55
50
  end
51
+
52
+ connect_to_db
53
+ load_db
54
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: looky-lu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Hopp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-10 00:00:00.000000000 Z
11
+ date: 2013-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -195,6 +195,7 @@ files:
195
195
  - Rakefile
196
196
  - lib/app/models/State.rb
197
197
  - lib/data/lu/states.rb
198
+ - lib/data/lu/states.yml
198
199
  - lib/db/migrations/create_states.rb.erb
199
200
  - lib/generators/lookylu/base_generator.rb
200
201
  - lib/generators/lookylu/state_data_generator.rb
@@ -205,6 +206,7 @@ files:
205
206
  - lib/looky-lu/engine.rb
206
207
  - lib/looky-lu/version.rb
207
208
  - looky-lu.gemspec
209
+ - spec/data/state_data_spec.rb
208
210
  - spec/generators/base_generator_spec.rb
209
211
  - spec/generators/state_data_generator_spec.rb
210
212
  - spec/generators/state_generator_spec.rb
@@ -237,6 +239,7 @@ signing_key:
237
239
  specification_version: 4
238
240
  summary: ''
239
241
  test_files:
242
+ - spec/data/state_data_spec.rb
240
243
  - spec/generators/base_generator_spec.rb
241
244
  - spec/generators/state_data_generator_spec.rb
242
245
  - spec/generators/state_generator_spec.rb