looky-lu 0.0.1 → 0.0.2

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