makena 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +37 -0
  3. data/Gemfile +139 -0
  4. data/Gemfile.lock +469 -0
  5. data/README.rdoc +28 -0
  6. data/Rakefile +6 -0
  7. data/app/assets/images/.keep +0 -0
  8. data/app/assets/javascripts/application.js +16 -0
  9. data/app/assets/stylesheets/application.css +13 -0
  10. data/app/controllers/application_controller.rb +5 -0
  11. data/app/controllers/concerns/.keep +0 -0
  12. data/app/helpers/application_helper.rb +2 -0
  13. data/app/mailers/.keep +0 -0
  14. data/app/models/.keep +0 -0
  15. data/app/models/concerns/.keep +0 -0
  16. data/app/views/layouts/application.html.erb +14 -0
  17. data/bin/bundle +3 -0
  18. data/bin/rails +4 -0
  19. data/bin/rake +4 -0
  20. data/config.ru +4 -0
  21. data/config/application.rb +23 -0
  22. data/config/boot.rb +4 -0
  23. data/config/database.yml +39 -0
  24. data/config/environment.rb +5 -0
  25. data/config/environments/development.rb +29 -0
  26. data/config/environments/production.rb +80 -0
  27. data/config/environments/test.rb +36 -0
  28. data/config/initializers/backtrace_silencers.rb +7 -0
  29. data/config/initializers/filter_parameter_logging.rb +4 -0
  30. data/config/initializers/inflections.rb +16 -0
  31. data/config/initializers/mime_types.rb +5 -0
  32. data/config/initializers/secret_token.rb +12 -0
  33. data/config/initializers/session_store.rb +3 -0
  34. data/config/initializers/wrap_parameters.rb +14 -0
  35. data/config/locales/en.yml +23 -0
  36. data/config/routes.rb +56 -0
  37. data/db/seeds.rb +7 -0
  38. data/lib/assets/.keep +0 -0
  39. data/lib/generators/connection/USAGE +26 -0
  40. data/lib/generators/connection/connection_generator.rb +195 -0
  41. data/lib/generators/connection/templates/extensions/alpha_alphas.rb +17 -0
  42. data/lib/generators/connection/templates/extensions/alpha_betas.rb +17 -0
  43. data/lib/generators/connection/templates/extensions/geocoder.rb +23 -0
  44. data/lib/generators/connection/templates/extensions/image.rb +12 -0
  45. data/lib/generators/copy/USAGE +7 -0
  46. data/lib/generators/copy/copy_generator.rb +41 -0
  47. data/lib/generators/git/USAGE +8 -0
  48. data/lib/generators/git/git_generator.rb +59 -0
  49. data/lib/generators/setup/USAGE +8 -0
  50. data/lib/generators/setup/setup_generator.rb +151 -0
  51. data/lib/generators/success/USAGE +44 -0
  52. data/lib/generators/success/success_generator.rb +18 -0
  53. data/lib/tasks/.keep +0 -0
  54. data/makena/.gitignore +17 -0
  55. data/makena/Gemfile +4 -0
  56. data/makena/LICENSE.txt +22 -0
  57. data/makena/README.md +32 -0
  58. data/makena/Rakefile +1 -0
  59. data/makena/lib/makena.rb +21 -0
  60. data/makena/lib/makena/controllers.rb +218 -0
  61. data/makena/lib/makena/gps.rb +2 -0
  62. data/makena/lib/makena/image.rb +2 -0
  63. data/makena/lib/makena/layouts.rb +41 -0
  64. data/makena/lib/makena/models.rb +2 -0
  65. data/makena/lib/makena/tree.rb +181 -0
  66. data/makena/lib/makena/version.rb +3 -0
  67. data/makena/lib/makena/views.rb +225 -0
  68. data/makena/makena.gemspec +23 -0
  69. data/public/404.html +58 -0
  70. data/public/422.html +58 -0
  71. data/public/500.html +57 -0
  72. data/public/favicon.ico +0 -0
  73. data/public/robots.txt +5 -0
  74. data/vendor/assets/javascripts/.keep +0 -0
  75. data/vendor/assets/stylesheets/.keep +0 -0
  76. metadata +150 -0
data/config/routes.rb ADDED
@@ -0,0 +1,56 @@
1
+ Makena::Application.routes.draw do
2
+ # The priority is based upon order of creation: first created -> highest priority.
3
+ # See how all your routes lay out with "rake routes".
4
+
5
+ # You can have the root of your site routed with "root"
6
+ # root 'welcome#index'
7
+
8
+ # Example of regular route:
9
+ # get 'products/:id' => 'catalog#view'
10
+
11
+ # Example of named route that can be invoked with purchase_url(id: product.id)
12
+ # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
13
+
14
+ # Example resource route (maps HTTP verbs to controller actions automatically):
15
+ # resources :products
16
+
17
+ # Example resource route with options:
18
+ # resources :products do
19
+ # member do
20
+ # get 'short'
21
+ # post 'toggle'
22
+ # end
23
+ #
24
+ # collection do
25
+ # get 'sold'
26
+ # end
27
+ # end
28
+
29
+ # Example resource route with sub-resources:
30
+ # resources :products do
31
+ # resources :comments, :sales
32
+ # resource :seller
33
+ # end
34
+
35
+ # Example resource route with more complex sub-resources:
36
+ # resources :products do
37
+ # resources :comments
38
+ # resources :sales do
39
+ # get 'recent', on: :collection
40
+ # end
41
+ # end
42
+
43
+ # Example resource route with concerns:
44
+ # concern :toggleable do
45
+ # post 'toggle'
46
+ # end
47
+ # resources :posts, concerns: :toggleable
48
+ # resources :photos, concerns: :toggleable
49
+
50
+ # Example resource route within a namespace:
51
+ # namespace :admin do
52
+ # # Directs /admin/products/* to Admin::ProductsController
53
+ # # (app/controllers/admin/products_controller.rb)
54
+ # resources :products
55
+ # end
56
+ end
data/db/seeds.rb ADDED
@@ -0,0 +1,7 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
7
+ # Mayor.create(name: 'Emanuel', city: cities.first)
data/lib/assets/.keep ADDED
File without changes
@@ -0,0 +1,26 @@
1
+ Description:
2
+
3
+ To change this USAGE document : $ vim lib/generators/connection/USAGE
4
+ To get here: $ rails g connection -h(elp)
5
+
6
+ Examples:
7
+
8
+ $ rails g(generator) connection alpha beta feature1|feature2|feature3...
9
+ where alpha = The name of object connecting from
10
+ where beta = The name of the non-existant object connecting to
11
+
12
+ if alpha = beta,
13
+ then beta is not created
14
+ then alpha is parent to beta
15
+ then beta is child to alpha
16
+
17
+ if beta = none,
18
+ then beta is not created
19
+
20
+ Example:
21
+
22
+ $ rails g connection user location name|content|location|image
23
+ $ rails g connection spot note name|content|image
24
+
25
+ This will create:
26
+ what/will/it/create
@@ -0,0 +1,195 @@
1
+ class ConnectionGenerator < Rails::Generators::NamedBase
2
+
3
+ # Look from root
4
+ source_root File.expand_path('../../../../', __FILE__)
5
+
6
+ # Example:
7
+ # rails g connectionion spot note name|content|image
8
+ def establish_variables
9
+ @alpha = name.underscore.singularize
10
+ @beta = args.shift.underscore.singularize
11
+ @connection = @alpha+"_"+@beta
12
+ @atts = args.shift.to_s.split("|")
13
+ @root = "lib/generators/connection/templates"
14
+ end
15
+
16
+ # Create standard scaffold
17
+ def generate_scaffold_and_models
18
+ if @alpha!=@beta
19
+ generate_scaffold_beta
20
+ generate_model_alpha_beta
21
+ elsif @alpha==@beta
22
+ generate_model_parents_children
23
+ end
24
+ end
25
+
26
+ # Modify standard views
27
+ def modify_views
28
+ if @alpha!=@beta
29
+ modify_views_assocs
30
+ end
31
+ end
32
+
33
+ def generate_extensions
34
+ if @alpha!=@beta
35
+ empty_directory "app/models/extensions"
36
+ add_has_many_to_alpha_beta_models
37
+ template_extensions_geocoder if @atts.include?("location")
38
+ template_extensions_image if @atts.include?("image")
39
+ elsif @alpha==@beta
40
+ template_extensions_parents_children
41
+ end
42
+ end
43
+
44
+ # Add feature testing
45
+ def add_testing_notes
46
+ a = "features/user.feature"
47
+ b = "#T\O\D\O Add testing for #{@alpha}, #{@beta}, #{@connection}"
48
+ prepend_to_file a, b
49
+ end
50
+
51
+ # Run migration
52
+ def run_migration
53
+ run "rake db:drop"
54
+ run "rake db:create"
55
+ run "rake db:migrate"
56
+ run "rake db:test:clone" # unless Rails 4.1+
57
+ end
58
+
59
+ private
60
+
61
+ # Generate parents and children model
62
+ def generate_model_parents_children
63
+ generate "model", "#{@connection} user:references parent:references child:references"
64
+ from_file = "app/models/#{@connection}.rb"
65
+ from = " belongs_to :parent"
66
+ to = " belongs_to :parent_#{@beta}, class_name: '#{@beta.camelcase}', foreign_key: 'parent_id'"
67
+ gsub_file from_file, from, to
68
+ from_file = "app/models/#{@connection}.rb"
69
+ from = " belongs_to :child"
70
+ to = " belongs_to :child_#{@beta}, class_name: '#{@beta.camelcase}', foreign_key: 'child_id'"
71
+ gsub_file from_file, from, to
72
+ end
73
+
74
+ # Modify assocs views
75
+ def modify_views_assocs
76
+ modify_view @beta, :name if @atts.include?("name")
77
+ modify_view @beta, :image if @atts.include?("image")
78
+ modify_view @beta, :text, :content if @atts.include?("content")
79
+ modify_view @beta, :address, :location if @atts.include?("address")
80
+ end
81
+
82
+ # Generate scaffold assocs
83
+ def generate_scaffold_beta
84
+ pass_order = "#{@beta.pluralize} user:references"
85
+ pass_order << " is_public:boolean:index"
86
+ pass_order << " name:string:index" if @atts.include?("name")
87
+ pass_order << " content:text" if @atts.include?("content")
88
+ if @atts.include?("location")
89
+ pass_order << " address:string:index"
90
+ pass_order << " latitude:float:index"
91
+ pass_order << " longitude:float:index"
92
+ end
93
+ pass_order << " image:string:index" if @atts.include?("image")
94
+ generate "scaffold", pass_order
95
+ end
96
+
97
+ # Generate model for associates
98
+ def generate_model_alpha_beta
99
+ generate "model", "#{@connection} user:references #{@alpha}:references #{@beta}:references"
100
+ from_file = "app/models/#{@connection}.rb"
101
+ from = " belongs_to :parent"
102
+ to = " belongs_to :parent_#{@beta}, class_name: '#{@beta.camelcase}', foreign_key: 'parent_id'"
103
+ gsub_file from_file, from, to
104
+ from_file = "app/models/#{@connection}.rb"
105
+ from = " belongs_to :child"
106
+ to = " belongs_to :child_#{@beta}, class_name: '#{@beta.camelcase}', foreign_key: 'child_id'"
107
+ gsub_file from_file, from, to
108
+ end
109
+
110
+ # Transfer assocs extensions
111
+ def add_has_many_to_alpha_beta_models
112
+ passtarget = "< ActiveRecord::Base\n"
113
+
114
+ passpath = "app/models/#{@alpha}.rb"
115
+ passinsert = " has_many :#{@alpha}_#{@beta.pluralize}\n"
116
+ passinsert << " has_many :#{@beta.pluralize}, :through => :#{@alpha}_#{@beta.pluralize}\n"
117
+ insert_into_file passpath, passinsert, :after => passtarget
118
+
119
+ passpath = "app/models/#{@beta}.rb"
120
+ passinsert = " has_many :#{@alpha}_#{@beta.pluralize}\n"
121
+ passinsert << " has_many :#{@alpha.pluralize}, :through => :#{@alpha}_#{@beta.pluralize}\n"
122
+ insert_into_file passpath, passinsert, :after => passtarget
123
+ end
124
+
125
+ # Transfer parents children extensions
126
+ def template_extensions_parents_children
127
+ generate_model_extension "AlphaAlphas"
128
+ modify_model_extension_include @alpha, "AlphaAlphas"
129
+ modify_model_extension_include @beta, "AlphaAlphas"
130
+ end
131
+
132
+ # Transfer image extensions
133
+ def template_extensions_image
134
+ generate_model_extension "Image"
135
+ modify_model_extension_include @beta, "Image"
136
+ end
137
+
138
+ # Transfer image extensions
139
+ def template_extensions_geocoder
140
+ generate_model_extension "Geocoder"
141
+ modify_model_extension_include @beta, "Geocoder"
142
+ end
143
+
144
+ # Generate model extension
145
+ def generate_model_extension(extname)
146
+ passfrom = "#{@root}/extensions/#{extname.underscore}.rb"
147
+ passto = "app/models/extensions/#{extname.underscore}.rb"
148
+ template passfrom, passto
149
+ end
150
+
151
+ # Modify object model
152
+ # after: class Spot < ActiveRecord::Base
153
+ # include Extensions::Geocoder
154
+ def modify_model_extension_include(objname, extname)
155
+ passtarget = "< ActiveRecord::Base\n"
156
+ passinsert = " include Extensions::#{extname}\n"
157
+ passpath = "app/models/#{objname}.rb"
158
+ insert_into_file passpath, passinsert, :after => passtarget
159
+ end
160
+
161
+ # Modify object views
162
+ def modify_view(objname, objtype, objatt=nil)
163
+ objatt||=objtype.to_sym
164
+ modify_view_form(objname, objtype, objatt)
165
+ build_view_partial(objname, objtype, objatt)
166
+ modify_view_partial(objname, objtype, objatt)
167
+ end
168
+
169
+ # Modify object form
170
+ def modify_view_form(objname, objtype, objatt)
171
+ passformtarget = "<%= form_for @#{objname}, data:{ajax:false}, html:{multipart:true} do |f| %>\n"
172
+ passforminsert = " <%= layouts_form f, @#{objname}, \"#{objtype}\", #{objatt} %>\n"
173
+ passfilepath = "app/views/#{objname.pluralize}/_form.html.erb"
174
+ insert_into_file passfilepath, passforminsert, :after => passformtarget
175
+ end
176
+
177
+ # Build object partial
178
+ def build_view_partial(objname, objtype, objatt)
179
+ passfilepath = "app/views/#{objname.pluralize}/_#{objname}.html.erb"
180
+ pass = []
181
+ pass << "<!-- #{passfilepath} -->"
182
+ pass << "<%= form_for @#{objname}, data:{ajax:false}, html:{multipart:true} do |f| %>"
183
+ pass << "<% end %>"
184
+ create_file passfilepath, pass.join("\n")
185
+ end
186
+
187
+ # Modify object partial
188
+ def modify_view_partial(objname, objtype, objatt)
189
+ passformtarget = "<%= form_for @#{objname}, data:{ajax:false}, html:{multipart:true} do |f| %>\n"
190
+ passforminsert = " <%= layouts_show #{objname}, \"#{objtype}\", #{objatt} %>\n"
191
+ passfilepath = "app/views/#{objname.pluralize}/_#{objname}.html.erb"
192
+ insert_into_file passfilepath, passforminsert, :after => passformtarget
193
+ end
194
+
195
+ end
@@ -0,0 +1,17 @@
1
+ module Extensions
2
+ module <%= (@alpha.camelize+@alpha.camelize).pluralize %>
3
+ extend ActiveSupport::Concern
4
+ included do
5
+
6
+ attr_accessor :<%= @alpha %>_parent_id
7
+ attr_accessor :<%= @alpha %>_child_id
8
+
9
+ has_many :<%= @alpha+"_"+@alpha.pluralize %>, :foreign_key => 'parent_id'
10
+ has_many :parent_<%= @alpha+"_"+@alpha.pluralize %>, :class_name => 'SpotSpot', :foreign_key => 'child_id'
11
+ has_many :parents, :through => :parent_<%= @alpha+"_"+@alpha.pluralize %>, :source => :parent_<%= @alpha %>, :foreign_key => 'parent_id'
12
+ has_many :child_<%= @alpha+"_"+@alpha.pluralize %>, :class_name => '<%= (@alpha.camelize+@alpha.camelize) %>', :foreign_key => 'parent_id'
13
+ has_many :children, :through => :child_<%= @alpha+"_"+@alpha.pluralize %>, :source => :child_<%= @alpha %>, :foreign_key => 'child_id'
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Extensions
2
+ module <%= (@alpha.camelize+@alpha.camelize).pluralize %>
3
+ extend ActiveSupport::Concern
4
+ included do
5
+
6
+ attr_accessor :<%= @alpha %>_parent_id
7
+ attr_accessor :<%= @alpha %>_child_id
8
+
9
+ has_many :<%= @alpha+"_"+@alpha.pluralize %>, :foreign_key => 'parent_id'
10
+ has_many :parent_<%= @alpha+"_"+@alpha.pluralize %>, :class_name => 'SpotSpot', :foreign_key => 'child_id'
11
+ has_many :parents, :through => :parent_<%= @alpha+"_"+@alpha.pluralize %>, :source => :parent_<%= @alpha %>, :foreign_key => 'parent_id'
12
+ has_many :child_<%= @alpha+"_"+@alpha.pluralize %>, :class_name => '<%= (@alpha.camelize+@alpha.camelize) %>', :foreign_key => 'parent_id'
13
+ has_many :children, :through => :child_<%= @alpha+"_"+@alpha.pluralize %>, :source => :child_<%= @alpha %>, :foreign_key => 'child_id'
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ module Extensions
2
+ module Geocoder
3
+ extend ActiveSupport::Concern
4
+ included do
5
+
6
+ # Testing? Then timeout now
7
+ Geocoder.configure(:timeout => 0) unless Rails.env.test?
8
+
9
+ # Geocoder: street address or IP address
10
+ geocoded_by :address, :if => :address_changed?
11
+
12
+ # Geocoder: auto-fetch coordinates
13
+ after_validation :geocode, :if => :address_changed?
14
+
15
+ # reverse geocode by latitude and longitude attributes
16
+ reverse_geocoded_by :latitude, :longitude, :if => :longitude_changed?
17
+
18
+ # Geocoder: auto-fetch address
19
+ after_validation :reverse_geocode, :if => :longitude_changed?
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,12 @@
1
+ module Extensions
2
+ module Image
3
+ extend ActiveSupport::Concern
4
+ included do
5
+
6
+ mount_uploader :image, ImageUploader
7
+ attr_accessor :remove_image
8
+ attr_accessor :remote_image_url
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ Description:
2
+ Change all words to new words
3
+
4
+ Example:
5
+ rails g copy app/ apple JackFruit
6
+
7
+ This will change all words of "apple", "Apple", "APPLE" to, "jackfruit", "Jack fruit", "JACKFRUIT" (and more...)
@@ -0,0 +1,41 @@
1
+ class CopyGenerator < Rails::Generators::NamedBase
2
+ source_root File.expand_path('../../../../', __FILE__)
3
+ # name = file or folder
4
+
5
+ # rails g oldword newword oldname [newname]
6
+ def process_names
7
+ @oldword = name.to_s.humanize.downcase.gsub(" ","_")
8
+ @newword = args.shift.to_s.humanize.downcase.gsub(" ","_")
9
+ @oldname = args.shift.to_s
10
+ @newname = (newname=args.shift).present? ? newname.to_s : @oldname.to_s
11
+ @newname = @newname.
12
+ gsub((o=@oldword).pluralize, (n=@newword).pluralize).
13
+ gsub(o.singularize, n.singularize)
14
+ end
15
+
16
+ def move_files_or_directories
17
+ if @oldname.gsub("..","").scan(".").present?
18
+ copy_file @oldname, @newname
19
+ else
20
+ directory @oldname, @newname
21
+ end
22
+ end
23
+
24
+ def apply_names
25
+ adapt_words @newname, @oldword.pluralize, @newword.pluralize
26
+ adapt_words @newname, @oldword.singularize, @newword.singularize
27
+ end
28
+
29
+ private
30
+
31
+ # grep -rl 'pass_old_word' pass_path | xargs sed -i 's/'pass_old_word'/pass_new_word/g'
32
+ def adapt_words(pass_path, pass_oldword, pass_newword)
33
+ run "grep -rl '#{pass_oldword}' #{pass_path} | xargs sed -i 's/#{pass_oldword}/#{pass_newword}/g'"
34
+ run "grep -rl '#{pass_oldword.camelcase}' #{pass_path} | xargs sed -i 's/#{pass_oldword.camelcase}/#{pass_newword.camelcase}/g'"
35
+ run "grep -rl '#{pass_oldword.upcase}' #{pass_path} | xargs sed -i 's/#{pass_oldword.upcase}/#{pass_newword.upcase}/g'"
36
+ run "grep -rl '#{pass_oldword.downcase}' #{pass_path} | xargs sed -i 's/#{pass_oldword.downcase}/#{pass_newword.downcase}/g'"
37
+ run "grep -rl '#{pass_oldword.humanize}' #{pass_path} | xargs sed -i 's/#{pass_oldword.humanize}/#{pass_newword.humanize}/g'"
38
+ run "grep -rl '#{pass_oldword.titleize}' #{pass_path} | xargs sed -i 's/#{pass_oldword.titleize}/#{pass_newword.titleize}/g'"
39
+ end
40
+
41
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate git Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -0,0 +1,59 @@
1
+ class GitGenerator < Rails::Generators::NamedBase
2
+
3
+ source_root File.expand_path('../../../../', __FILE__)
4
+ argument :content, :type => :string, :default => ""
5
+
6
+ def do_railroad
7
+ if content.present?
8
+ run "railroady -M -b | dot -Tsvg > app/assets/images/models.svg"
9
+ run "railroady -C -b | dot -Tsvg > app/assets/images/controllers.svg"
10
+ end
11
+ end
12
+
13
+ def do_yard
14
+ if content.present?
15
+ run "yard"
16
+ end
17
+ end
18
+
19
+ def do_assets_precompile
20
+ if content.present?
21
+ run "rake assets:precompile"
22
+ end
23
+ end
24
+
25
+ def git_gc_and_prune
26
+ if content.present?
27
+ run "git gc --prune"
28
+ end
29
+ end
30
+
31
+ def git_comment
32
+ if content.present?
33
+ run "git add --all .; git commit -m '#{name.to_s.humanize.upcase} << #{content.to_s.gsub("_"," ")}'"
34
+ run "heroku maintenance:on" if content.present?
35
+ run "git push heroku master"
36
+ else
37
+ run "git add --all .; git commit -m '#{name.to_s}'"
38
+ end
39
+ end
40
+
41
+ def run_heroku_migration
42
+ if content.present?
43
+ run "heroku run rake db:migrate" if content.present?
44
+ end
45
+ end
46
+
47
+ def run_heroku_restart
48
+ if content.present?
49
+ run "heroku restart" if content.present?
50
+ run "heroku maintenance:off" if content.present?
51
+ end
52
+ end
53
+
54
+ def git_add
55
+ run "rake notes"
56
+ end
57
+
58
+
59
+ end