scaffold_plus 1.4.16 → 1.5.0

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cfe850e68fb470d89fe657192af96933d6a2d8e6
4
- data.tar.gz: 35a241fc5cc772f80b327374a6027ec12ee70f04
3
+ metadata.gz: 68734750146a32a30b34dd4ac662f7e4f8338087
4
+ data.tar.gz: c0b6a9ec6c80f13618837257cd0b36b6ce88c8f1
5
5
  SHA512:
6
- metadata.gz: 328b0f2324d9874a611211e57ef87b54c2ebb24320482aa221a81c10f206c4eb9307fa7284bd3e1914ace4f4ed878139c1884e1e16d114afcd73dd35d48015ca
7
- data.tar.gz: 892e75b8c5096796849833fade07d38d0d5fd8499030cf400651684841099257c1f00b6c64c1882991756df5eed452c8b2e4e630144b408f9ac8a74c563a298a
6
+ metadata.gz: 284a0a8fabf17966663bc38281fedd8f04d6bcd8828eb47303db1b128c22ef6a8f62de0d10a1bf6a50cb2ecc878859d62800d860636ae36b3161018093cc668c
7
+ data.tar.gz: fbb087f7decee500fa94b2c25012921424cf168eae4a3216c63b01e2c26679884c297b5578760344c15277dcd329dea055a143b8b15f8172ed7e350a2a61bcb9
data/Makefile CHANGED
@@ -9,15 +9,15 @@ all: build
9
9
  rel: build
10
10
  vim lib/scaffold_plus/version.rb
11
11
  git commit -a
12
- rake release
13
12
  sudo gem uninstall scaffold_plus --all
14
- sudo rake install
13
+ rake release
15
14
 
16
15
 
17
16
  install: build
18
17
  git commit -a
19
18
  sudo gem uninstall scaffold_plus --all
20
19
  sudo rake install
20
+ sudo rm -rf pkg
21
21
 
22
22
  build:
23
23
  git add lib
data/README.md CHANGED
@@ -50,6 +50,28 @@ and accepts_nested_attributes_for in one of the parents.
50
50
  This helper scaffolds a has_and_belongs_to_many relationship with migration
51
51
  and updates to the models.
52
52
 
53
+ ### Set the autofocus flag on a column
54
+ rails generate scaffold_plus:autofocus
55
+
56
+ This helper adds "autofocus: true" to an input field in the form view.
57
+
58
+ ### Add geo location to resource
59
+ rails generate scaffold_plus:geocoder_init
60
+ rails generate scaffold_plus:geocoder
61
+
62
+ These helpers need the [geocoder](http://www.rubygeocoder.com) gem.
63
+
64
+ The first helper creates an initializer for geocoder. It supports the
65
+ language (default 'de'), timeout (default 5) and units (default km)
66
+ options.
67
+
68
+ The second one adds geolocating to a resource. It uses Google geocoding
69
+ and requires 'lat', 'lng' and 'address' attributes (the names can be
70
+ changed via options). If a '--country' flag is added, the helper
71
+ tries to isolate the country from the address and stores the country
72
+ code (e.g. DE or NL) in a given 'country' attribute. This is currently
73
+ only implemented for Germany (DE).
74
+
53
75
  ## Testing
54
76
 
55
77
  Since I have no experience with test driven development (yet), this is
@@ -0,0 +1,60 @@
1
+ require 'rails/generators/active_record'
2
+
3
+ module ScaffoldPlus
4
+ module Generators
5
+ class GeocoderGenerator < ActiveRecord::Generators::Base
6
+ desc "Add GeoLocation to resource (requires geocoder gem)"
7
+ argument :name, type: :string,
8
+ desc: "The object to be geocoded"
9
+ class_option :address, type: :string, default: "address",
10
+ desc: 'Attribute used for geocoding'
11
+ class_option :latitude, type: :string, default: "lat",
12
+ desc: 'Attribute used for storing latitude'
13
+ class_option :longitude, type: :string, default: "lng",
14
+ desc: 'Attribute used for storing longitude'
15
+ class_option :country, type: :boolean, default: false,
16
+ desc: 'Isolate country into separate attribute'
17
+ class_option :before, type: :boolean, default: false,
18
+ desc: 'Add a line before generated text in model'
19
+ class_option :after, type: :boolean, default: false,
20
+ desc: 'Add a line after generated text in model'
21
+ source_root File.expand_path('../templates', __FILE__)
22
+
23
+ def update_model
24
+ geocoded = " geocoded_by :#{options.address}"
25
+ geocoded << ", latitude: :#{options.latitude}"
26
+ geocoded << ", longitude: :#{options.longitude}"
27
+ if options.country?
28
+ geocoded << " do |obj,results|"
29
+ country = [
30
+ " if geo = results.first",
31
+ " # puts JSON.pretty_generate(geo.as_json)",
32
+ " if geo.country_code.upcase == 'DE'",
33
+ " obj.country = 'DE'",
34
+ " obj.address = geo.address.gsub(/, Deutschland/, '')",
35
+ " obj.#{options.latitude} = geo.latitude",
36
+ " obj.#{options.longitude} = geo.longitude",
37
+ " end",
38
+ " end",
39
+ " end"
40
+ ]
41
+ else
42
+ country = []
43
+ end
44
+ lines = options.before? ? [ "\n" ] : []
45
+ lines << [
46
+ geocoded,
47
+ country,
48
+ " after_validation :geocode" +
49
+ ", if: ->(obj){ obj.#{options.address}.present?" +
50
+ " and obj.#{options.address}_changed? }",
51
+ ""
52
+ ]
53
+ lines << "\n" if options.after?
54
+ inject_into_class "app/models/#{name}.rb", class_name do
55
+ lines.flatten.join("\n")
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,18 @@
1
+ module ScaffoldPlus
2
+ module Generators
3
+ class GeocoderInitGenerator < Rails::Generators::Base
4
+ desc "Generate an initializer for the geocoder gem"
5
+ class_option :language, type: :string, default: "de",
6
+ desc: 'Language of the interface'
7
+ class_option :timeout, type: :string, default: "5",
8
+ desc: 'Lookup timeout in seconds'
9
+ class_option :units, type: :string, default: "km",
10
+ desc: 'Define distance units (miles, km)'
11
+ source_root File.expand_path("../templates", __FILE__)
12
+
13
+ def add_initializer
14
+ template "geocoder.rb", "config/initializers/geocoder.rb"
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ Geocoder.configure(
2
+ # geocoding options
3
+ :lookup => :google,
4
+ :language => :<%= options.language %>,
5
+ :timeout => <%= options.timeout %>,
6
+ # :cache => Redis.new,
7
+ # :cache_prefix => 'geocoder:',
8
+
9
+ # calculation options
10
+ :units => :<%= options.units %>,
11
+ :distances => :spherical
12
+ )
@@ -1,3 +1,3 @@
1
1
  module ScaffoldPlus
2
- VERSION = "1.4.16"
2
+ VERSION = "1.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scaffold_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.16
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Volker Wiegand
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-26 00:00:00.000000000 Z
11
+ date: 2014-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -85,6 +85,9 @@ files:
85
85
  - lib/generators/scaffold_plus/collection/collection_generator.rb
86
86
  - lib/generators/scaffold_plus/collection/templates/view.html.erb
87
87
  - lib/generators/scaffold_plus/force_ssl/force_ssl_generator.rb
88
+ - lib/generators/scaffold_plus/geocoder/geocoder_generator.rb
89
+ - lib/generators/scaffold_plus/geocoder_init/geocoder_init_generator.rb
90
+ - lib/generators/scaffold_plus/geocoder_init/templates/geocoder.rb
88
91
  - lib/generators/scaffold_plus/habtm/habtm_generator.rb
89
92
  - lib/generators/scaffold_plus/habtm/templates/habtm_migration.rb
90
93
  - lib/generators/scaffold_plus/has_many/has_many_generator.rb
@@ -117,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
120
  version: '0'
118
121
  requirements: []
119
122
  rubyforge_project:
120
- rubygems_version: 2.4.1
123
+ rubygems_version: 2.4.2
121
124
  signing_key:
122
125
  specification_version: 4
123
126
  summary: A collection of little helpers for Rails scaffolding