mvpkit 0.8.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 +7 -0
- data/Gemfile +30 -0
- data/Gemfile.lock +329 -0
- data/LICENSE.txt +20 -0
- data/MIT-LICENSE +20 -0
- data/README.md +134 -0
- data/Rakefile +52 -0
- data/VERSION +1 -0
- data/app/assets/javascripts/mvp/application.js +1 -0
- data/app/assets/stylesheets/mvp/application.scss +0 -0
- data/app/controllers/concerns/mvp/analytics_concern.rb +78 -0
- data/app/controllers/concerns/mvp/seo_concern.rb +25 -0
- data/app/controllers/concerns/mvp/session_concern.rb +44 -0
- data/app/controllers/mvp/analytics_controller.rb +12 -0
- data/app/controllers/mvp/seo_controller.rb +11 -0
- data/app/controllers/mvp/styleguide_controller.rb +23 -0
- data/app/helpers/minimum_viable_product/body_helper.rb +14 -0
- data/app/helpers/minimum_viable_product/bootstrap_helper.rb +38 -0
- data/app/helpers/minimum_viable_product/styleguide_helper.rb +4 -0
- data/app/models/concerns/mvp/slugification.rb +24 -0
- data/app/views/layouts/minimum_viable_product/_instrumentation.html.erb +100 -0
- data/app/views/layouts/minimum_viable_product/_meta.html.erb +37 -0
- data/app/views/layouts/minimum_viable_product/application.html.erb +19 -0
- data/app/views/minimum_viable_product/styleguide/_example.html.erb +6 -0
- data/app/views/minimum_viable_product/styleguide/bootstrap/_buttons.html.erb +191 -0
- data/app/views/minimum_viable_product/styleguide/bootstrap/_forms.html.erb +192 -0
- data/app/views/minimum_viable_product/styleguide/bootstrap/_header.html.erb +48 -0
- data/app/views/minimum_viable_product/styleguide/bootstrap/_panels.html.erb +16 -0
- data/app/views/minimum_viable_product/styleguide/bootstrap/_tables.html.erb +34 -0
- data/app/views/minimum_viable_product/styleguide/bootstrap/_typography.html.erb +51 -0
- data/app/views/minimum_viable_product/styleguide/bootstrap.html.erb +43 -0
- data/app/views/minimum_viable_product/styleguide/elements/_grouping.html.erb +1 -0
- data/app/views/minimum_viable_product/styleguide/elements/partials/_row_groups_of.html.erb +7 -0
- data/app/views/minimum_viable_product/styleguide/index.html.erb +17 -0
- data/app/views/minimum_viable_product/styleguide/layouts/basic.html.erb +4 -0
- data/app/views/minimum_viable_product/styleguide/layouts/carousel.html.erb +120 -0
- data/app/views/minimum_viable_product/styleguide/layouts/cover.html.erb +34 -0
- data/assets/js/application.js +31 -0
- data/assets/js/init/controllers.js +26 -0
- data/assets/js/init/forms.js +12 -0
- data/bin/mvp +78 -0
- data/bin/rails +12 -0
- data/config/initializers/assets.rb +2 -0
- data/config/initializers/canonical_host.rb +3 -0
- data/config/initializers/cloudinary.rb +7 -0
- data/config/initializers/geocoder.rb +9 -0
- data/config/initializers/iteration.rb +33 -0
- data/config/initializers/project.rb +1 -0
- data/config/initializers/rollbar.rb +59 -0
- data/config/initializers/routing.rb +7 -0
- data/config/initializers/spoof_ip.rb +33 -0
- data/config/initializers/ssl.rb +14 -0
- data/config/routes.rb +6 -0
- data/lib/mvp/engine.rb +22 -0
- data/lib/mvp/ext/nil.rb +5 -0
- data/lib/mvp/ext/string.rb +7 -0
- data/lib/mvpkit.rb +6 -0
- data/lib/tasks/sitemap.rake +42 -0
- data/mvpkit.gemspec +245 -0
- data/package.json +43 -0
- data/project/.gitignore +45 -0
- data/project/Gemfile +33 -0
- data/project/Gemfile.lock +437 -0
- data/project/Procfile +2 -0
- data/project/README.md +117 -0
- data/project/Rakefile +14 -0
- data/project/app/controllers/application_controller.rb +12 -0
- data/project/app/controllers/conversions_controller.rb +24 -0
- data/project/app/controllers/examples_controller.rb +2 -0
- data/project/app/controllers/home_controller.rb +7 -0
- data/project/app/decorators/.keep +0 -0
- data/project/app/helpers/application_helper.rb +24 -0
- data/project/app/mailers/.keep +0 -0
- data/project/app/models/conversion.rb +4 -0
- data/project/app/views/examples/index.html.erb +1 -0
- data/project/app/views/examples/mustache/template.mustache +1 -0
- data/project/app/views/examples/mustache.html.erb +18 -0
- data/project/app/views/home/conversion.html.erb +12 -0
- data/project/app/views/home/index.html.erb +28 -0
- data/project/app/views/layouts/_header.html.erb +16 -0
- data/project/app/views/layouts/_includes.html.erb +7 -0
- data/project/app/views/layouts/application.html.erb +17 -0
- data/project/app/views/layouts/modal.html.erb +14 -0
- data/project/assets/images/.keep +0 -0
- data/project/assets/images/favicon.ico +0 -0
- data/project/assets/javascripts/controllers/home.coffee +15 -0
- data/project/assets/javascripts/pack.js +9 -0
- data/project/assets/stylesheets/config/variables.scss +876 -0
- data/project/assets/stylesheets/layout/basic.scss +6 -0
- data/project/assets/stylesheets/layout/carousel.scss +127 -0
- data/project/assets/stylesheets/layout/cover.scss +129 -0
- data/project/assets/stylesheets/lib/spacing.scss +55 -0
- data/project/assets/stylesheets/skin/style.scss +16 -0
- data/project/assets/stylesheets/style.scss +8 -0
- data/project/bin/bundle +3 -0
- data/project/bin/rails +9 -0
- data/project/bin/rake +9 -0
- data/project/bin/setup +32 -0
- data/project/bin/spring +15 -0
- data/project/config/application.rb +32 -0
- data/project/config/boot.rb +3 -0
- data/project/config/database.yml +19 -0
- data/project/config/environment.rb +5 -0
- data/project/config/environments/development.rb +67 -0
- data/project/config/environments/production.rb +93 -0
- data/project/config/environments/test.rb +42 -0
- data/project/config/initializers/assets.rb +11 -0
- data/project/config/initializers/backtrace_silencers.rb +7 -0
- data/project/config/initializers/cookies_serializer.rb +3 -0
- data/project/config/initializers/filter_parameter_logging.rb +4 -0
- data/project/config/initializers/inflections.rb +16 -0
- data/project/config/initializers/mime_types.rb +4 -0
- data/project/config/initializers/mustache.rb +7 -0
- data/project/config/initializers/rails_admin.rb +43 -0
- data/project/config/initializers/session_store.rb +3 -0
- data/project/config/initializers/simple_form.rb +177 -0
- data/project/config/initializers/wrap_parameters.rb +14 -0
- data/project/config/locales/en.yml +23 -0
- data/project/config/locales/simple_form.en.yml +31 -0
- data/project/config/routes.rb +13 -0
- data/project/config/secrets.yml +8 -0
- data/project/config/sitemap.rb +28 -0
- data/project/config.ru +4 -0
- data/project/db/migrate/20160728235100_create_conversions.rb +9 -0
- data/project/db/schema.rb +25 -0
- data/project/db/seeds.rb +7 -0
- data/project/lib/assets/.keep +0 -0
- data/project/lib/tasks/heroku.rake +70 -0
- data/project/log/.keep +0 -0
- data/project/log/development.log +48216 -0
- data/project/log/production.log +0 -0
- data/project/package.json +44 -0
- data/project/public/404.html +67 -0
- data/project/public/422.html +67 -0
- data/project/public/500.html +66 -0
- data/project/public/assets/javascripts/448c34a56d699c29117adc64c43affeb.woff2 +0 -0
- data/project/public/assets/javascripts/89889688147bd7575d6327160d64e760.svg +288 -0
- data/project/public/assets/javascripts/e18bbf611f2a2e43afc071aa2f4e1512.ttf +0 -0
- data/project/public/assets/javascripts/f4769f9bdb7466be65088239c12046d1.eot +0 -0
- data/project/public/assets/javascripts/fa2772327f55d8198301fdb8bcfc8158.woff +0 -0
- data/project/public/assets/javascripts/pack.js +31367 -0
- data/project/public/assets/javascripts/pack.js.map +1 -0
- data/project/public/assets/pack.js +17220 -0
- data/project/public/assets/style.css +7477 -0
- data/project/vendor/assets/javascripts/.keep +0 -0
- data/project/vendor/assets/stylesheets/.keep +0 -0
- data/project/webpack.config.js +67 -0
- data/test/helper.rb +34 -0
- data/test/test_minimum_viable_product.rb +7 -0
- metadata +473 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
|
2
|
+
|
|
3
|
+
# Version of your assets, change this if you want to expire all your assets.
|
|
4
|
+
Rails.application.config.assets.version = '1.0'
|
|
5
|
+
|
|
6
|
+
# Add additional assets to the asset load path
|
|
7
|
+
Rails.application.config.assets.paths << Rails.root.join('public', 'assets', 'javascripts')
|
|
8
|
+
|
|
9
|
+
# Precompile additional assets.
|
|
10
|
+
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
|
11
|
+
# Rails.application.config.assets.precompile += %w( search.js )
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
|
2
|
+
|
|
3
|
+
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
|
|
4
|
+
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
|
|
5
|
+
|
|
6
|
+
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
|
|
7
|
+
# Rails.backtrace_cleaner.remove_silencers!
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
|
2
|
+
|
|
3
|
+
# Add new inflection rules using the following format. Inflections
|
|
4
|
+
# are locale specific, and you may define rules for as many different
|
|
5
|
+
# locales as you wish. All of these examples are active by default:
|
|
6
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
|
7
|
+
# inflect.plural /^(ox)$/i, '\1en'
|
|
8
|
+
# inflect.singular /^(ox)en/i, '\1'
|
|
9
|
+
# inflect.irregular 'person', 'people'
|
|
10
|
+
# inflect.uncountable %w( fish sheep )
|
|
11
|
+
# end
|
|
12
|
+
|
|
13
|
+
# These inflection rules are supported but not enabled by default:
|
|
14
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
|
15
|
+
# inflect.acronym 'RESTful'
|
|
16
|
+
# end
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
SmtRails.configure do |config|
|
|
2
|
+
config.template_extension = 'mustache' # change extension of mustache templates
|
|
3
|
+
config.action_view_key = 'mustache' # change name of key for rendering in ActionView mustache template
|
|
4
|
+
config.template_namespace = 'SMT' # change templates namespace in javascript
|
|
5
|
+
# config.template_base_path = Rails.root.join("assets", "templates") # templates dir
|
|
6
|
+
config.template_base_path = Rails.root.join("app", "views")
|
|
7
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
RailsAdmin.config do |config|
|
|
2
|
+
config.authorize_with do
|
|
3
|
+
if ENV["ADMIN_USER"] && ENV["ADMIN_PASSWORD"]
|
|
4
|
+
authenticate_or_request_with_http_basic('Site Message') do |username, password|
|
|
5
|
+
username == ENV["ADMIN_USER"] && password == ENV["ADMIN_PASSWORD"]
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
### Popular gems integration
|
|
10
|
+
|
|
11
|
+
## == Devise ==
|
|
12
|
+
# config.authenticate_with do
|
|
13
|
+
# warden.authenticate! scope: :user
|
|
14
|
+
# end
|
|
15
|
+
# config.current_user_method(&:current_user)
|
|
16
|
+
|
|
17
|
+
## == Cancan ==
|
|
18
|
+
# config.authorize_with :cancan
|
|
19
|
+
|
|
20
|
+
## == Pundit ==
|
|
21
|
+
# config.authorize_with :pundit
|
|
22
|
+
|
|
23
|
+
## == PaperTrail ==
|
|
24
|
+
# config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0
|
|
25
|
+
|
|
26
|
+
### More at https://github.com/sferik/rails_admin/wiki/Base-configuration
|
|
27
|
+
|
|
28
|
+
config.actions do
|
|
29
|
+
dashboard # mandatory
|
|
30
|
+
index # mandatory
|
|
31
|
+
new
|
|
32
|
+
export
|
|
33
|
+
bulk_delete
|
|
34
|
+
show
|
|
35
|
+
edit
|
|
36
|
+
delete
|
|
37
|
+
show_in_app
|
|
38
|
+
|
|
39
|
+
## With an audit adapter, you can add:
|
|
40
|
+
# history_index
|
|
41
|
+
# history_show
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
SimpleForm.setup do |config|
|
|
2
|
+
config.label_text = lambda { |label, required, explicit_label| "#{label}" }
|
|
3
|
+
config.error_notification_class = 'alert alert-danger'
|
|
4
|
+
config.button_class = 'btn btn-default'
|
|
5
|
+
config.boolean_label_class = nil
|
|
6
|
+
|
|
7
|
+
config.wrappers :vertical_form, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
8
|
+
b.use :html5
|
|
9
|
+
b.use :placeholder
|
|
10
|
+
b.optional :maxlength
|
|
11
|
+
b.optional :pattern
|
|
12
|
+
b.optional :min_max
|
|
13
|
+
b.optional :readonly
|
|
14
|
+
b.use :label, class: 'form-control-label'
|
|
15
|
+
|
|
16
|
+
b.use :input, class: 'form-control'
|
|
17
|
+
b.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
18
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
config.wrappers :vertical_file_input, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
22
|
+
b.use :html5
|
|
23
|
+
b.use :placeholder
|
|
24
|
+
b.optional :maxlength
|
|
25
|
+
b.optional :readonly
|
|
26
|
+
b.use :label, class: 'form-control-label'
|
|
27
|
+
|
|
28
|
+
b.use :input
|
|
29
|
+
b.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
30
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
config.wrappers :vertical_boolean, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
34
|
+
b.use :html5
|
|
35
|
+
b.optional :readonly
|
|
36
|
+
|
|
37
|
+
b.wrapper tag: 'div', class: 'checkbox' do |ba|
|
|
38
|
+
ba.use :label_input
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
b.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
42
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
config.wrappers :vertical_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
46
|
+
b.use :html5
|
|
47
|
+
b.optional :readonly
|
|
48
|
+
b.use :label, class: 'form-control-label'
|
|
49
|
+
b.use :input
|
|
50
|
+
b.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
51
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
config.wrappers :horizontal_form, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
55
|
+
b.use :html5
|
|
56
|
+
b.use :placeholder
|
|
57
|
+
b.optional :maxlength
|
|
58
|
+
b.optional :pattern
|
|
59
|
+
b.optional :min_max
|
|
60
|
+
b.optional :readonly
|
|
61
|
+
b.use :label, class: 'col-sm-3 form-control-label'
|
|
62
|
+
|
|
63
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
|
64
|
+
ba.use :input, class: 'form-control'
|
|
65
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
66
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
config.wrappers :horizontal_file_input, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
71
|
+
b.use :html5
|
|
72
|
+
b.use :placeholder
|
|
73
|
+
b.optional :maxlength
|
|
74
|
+
b.optional :readonly
|
|
75
|
+
b.use :label, class: 'col-sm-3 form-control-label'
|
|
76
|
+
|
|
77
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
|
78
|
+
ba.use :input
|
|
79
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
80
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
config.wrappers :horizontal_boolean, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
85
|
+
b.use :html5
|
|
86
|
+
b.optional :readonly
|
|
87
|
+
|
|
88
|
+
b.wrapper tag: 'div', class: 'col-sm-offset-3 col-sm-9' do |wr|
|
|
89
|
+
wr.wrapper tag: 'div', class: 'checkbox' do |ba|
|
|
90
|
+
ba.use :label_input
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
wr.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
94
|
+
wr.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
99
|
+
b.use :html5
|
|
100
|
+
b.optional :readonly
|
|
101
|
+
|
|
102
|
+
b.use :label, class: 'col-sm-3 form-control-label'
|
|
103
|
+
|
|
104
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
|
105
|
+
ba.use :input
|
|
106
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
107
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
config.wrappers :inline_form, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
112
|
+
b.use :html5
|
|
113
|
+
b.use :placeholder
|
|
114
|
+
b.optional :maxlength
|
|
115
|
+
b.optional :pattern
|
|
116
|
+
b.optional :min_max
|
|
117
|
+
b.optional :readonly
|
|
118
|
+
b.use :label, class: 'sr-only'
|
|
119
|
+
|
|
120
|
+
b.use :input, class: 'form-control'
|
|
121
|
+
b.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
122
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
config.wrappers :multi_select, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
126
|
+
b.use :html5
|
|
127
|
+
b.optional :readonly
|
|
128
|
+
b.use :label, class: 'form-control-label'
|
|
129
|
+
b.wrapper tag: 'div', class: 'form-inline' do |ba|
|
|
130
|
+
ba.use :input, class: 'form-control'
|
|
131
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
132
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
# Wrappers for forms and inputs using the Bootstrap toolkit.
|
|
136
|
+
# Check the Bootstrap docs (http://getbootstrap.com)
|
|
137
|
+
# to learn about the different styles for forms and inputs,
|
|
138
|
+
# buttons and other elements.
|
|
139
|
+
config.default_wrapper = :vertical_form
|
|
140
|
+
config.wrapper_mappings = {
|
|
141
|
+
check_boxes: :vertical_radio_and_checkboxes,
|
|
142
|
+
radio_buttons: :vertical_radio_and_checkboxes,
|
|
143
|
+
file: :vertical_file_input,
|
|
144
|
+
boolean: :vertical_boolean,
|
|
145
|
+
datetime: :multi_select,
|
|
146
|
+
date: :multi_select,
|
|
147
|
+
time: :multi_select
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
config.wrappers :vertical_input_group, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
151
|
+
b.use :html5
|
|
152
|
+
b.use :placeholder
|
|
153
|
+
b.use :label, class: 'form-control-label'
|
|
154
|
+
|
|
155
|
+
b.wrapper tag: 'div' do |ba|
|
|
156
|
+
ba.wrapper tag: 'div', class: 'input-group col-sm-12' do |append|
|
|
157
|
+
append.use :input, class: 'form-control'
|
|
158
|
+
end
|
|
159
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
160
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
config.wrappers :horizontal_input_group, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
|
165
|
+
b.use :html5
|
|
166
|
+
b.use :placeholder
|
|
167
|
+
b.use :label, class: 'col-sm-3 form-control-label'
|
|
168
|
+
|
|
169
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
|
170
|
+
ba.wrapper tag: 'div', class: 'input-group col-sm-12' do |append|
|
|
171
|
+
append.use :input, class: 'form-control'
|
|
172
|
+
end
|
|
173
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'form-control-feedback' }
|
|
174
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
|
2
|
+
|
|
3
|
+
# This file contains settings for ActionController::ParamsWrapper which
|
|
4
|
+
# is enabled by default.
|
|
5
|
+
|
|
6
|
+
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
|
7
|
+
ActiveSupport.on_load(:action_controller) do
|
|
8
|
+
wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# To enable root element in JSON for ActiveRecord objects.
|
|
12
|
+
# ActiveSupport.on_load(:active_record) do
|
|
13
|
+
# self.include_root_in_json = true
|
|
14
|
+
# end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Files in the config/locales directory are used for internationalization
|
|
2
|
+
# and are automatically loaded by Rails. If you want to use locales other
|
|
3
|
+
# than English, add the necessary files in this directory.
|
|
4
|
+
#
|
|
5
|
+
# To use the locales, use `I18n.t`:
|
|
6
|
+
#
|
|
7
|
+
# I18n.t 'hello'
|
|
8
|
+
#
|
|
9
|
+
# In views, this is aliased to just `t`:
|
|
10
|
+
#
|
|
11
|
+
# <%= t('hello') %>
|
|
12
|
+
#
|
|
13
|
+
# To use a different locale, set it with `I18n.locale`:
|
|
14
|
+
#
|
|
15
|
+
# I18n.locale = :es
|
|
16
|
+
#
|
|
17
|
+
# This would use the information in config/locales/es.yml.
|
|
18
|
+
#
|
|
19
|
+
# To learn more, please read the Rails Internationalization guide
|
|
20
|
+
# available at http://guides.rubyonrails.org/i18n.html.
|
|
21
|
+
|
|
22
|
+
en:
|
|
23
|
+
hello: "Hello world"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
en:
|
|
2
|
+
simple_form:
|
|
3
|
+
"yes": 'Yes'
|
|
4
|
+
"no": 'No'
|
|
5
|
+
required:
|
|
6
|
+
text: 'required'
|
|
7
|
+
mark: '*'
|
|
8
|
+
# You can uncomment the line below if you need to overwrite the whole required html.
|
|
9
|
+
# When using html, text and mark won't be used.
|
|
10
|
+
# html: '<abbr title="required">*</abbr>'
|
|
11
|
+
error_notification:
|
|
12
|
+
default_message: "Please review the problems below:"
|
|
13
|
+
# Examples
|
|
14
|
+
# labels:
|
|
15
|
+
# defaults:
|
|
16
|
+
# password: 'Password'
|
|
17
|
+
# user:
|
|
18
|
+
# new:
|
|
19
|
+
# email: 'E-mail to sign in.'
|
|
20
|
+
# edit:
|
|
21
|
+
# email: 'E-mail.'
|
|
22
|
+
# hints:
|
|
23
|
+
# defaults:
|
|
24
|
+
# username: 'User name to sign in.'
|
|
25
|
+
# password: 'No special characters, please.'
|
|
26
|
+
# include_blanks:
|
|
27
|
+
# defaults:
|
|
28
|
+
# age: 'Rather not say'
|
|
29
|
+
# prompts:
|
|
30
|
+
# defaults:
|
|
31
|
+
# age: 'Select your age'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Rails.application.routes.draw do
|
|
2
|
+
# mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
|
|
3
|
+
mount MVP::Engine => "/"
|
|
4
|
+
|
|
5
|
+
scope path: '/examples' do
|
|
6
|
+
get 'mustache', to: 'examples#mustache', as: :mustache_example
|
|
7
|
+
get '', to: 'examples#index', as: :examples
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
get 'conversion', to: 'home#conversion', as: :conversion
|
|
11
|
+
resource :conversion, only: [:create]
|
|
12
|
+
root 'home#index'
|
|
13
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
development:
|
|
2
|
+
secret_key_base: makesuretochangethisifyoucareaboutdevelopmentenvironmentforsomereason
|
|
3
|
+
test:
|
|
4
|
+
secret_key_base: makesuretochangethisifyoucareabouttestenvironmentforsomereason
|
|
5
|
+
staging:
|
|
6
|
+
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
|
|
7
|
+
production:
|
|
8
|
+
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
SitemapGenerator::Sitemap.default_host = "http://#{ENV['HOST_DOMAIN']}"
|
|
2
|
+
SitemapGenerator::Sitemap.public_path = 'tmp/sitemaps/'
|
|
3
|
+
|
|
4
|
+
SitemapGenerator::Sitemap.create do
|
|
5
|
+
# Put links creation logic here.
|
|
6
|
+
#
|
|
7
|
+
# The root path '/' and sitemap index file are added automatically for you.
|
|
8
|
+
# Links are added to the Sitemap in the order they are specified.
|
|
9
|
+
#
|
|
10
|
+
# Usage: add(path, options={})
|
|
11
|
+
# (default options are used if you don't specify)
|
|
12
|
+
#
|
|
13
|
+
# Defaults: :priority => 0.5, :changefreq => 'weekly',
|
|
14
|
+
# :lastmod => Time.now, :host => default_host
|
|
15
|
+
#
|
|
16
|
+
# Examples:
|
|
17
|
+
#
|
|
18
|
+
# Add '/articles'
|
|
19
|
+
#
|
|
20
|
+
# add articles_path, :priority => 0.7, :changefreq => 'daily'
|
|
21
|
+
#
|
|
22
|
+
# Add all articles:
|
|
23
|
+
#
|
|
24
|
+
# Article.find_each do |article|
|
|
25
|
+
# add article_path(article), :lastmod => article.updated_at
|
|
26
|
+
# end
|
|
27
|
+
add root_url
|
|
28
|
+
end
|
data/project/config.ru
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
# This file is auto-generated from the current state of the database. Instead
|
|
3
|
+
# of editing this file, please use the migrations feature of Active Record to
|
|
4
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
|
5
|
+
#
|
|
6
|
+
# Note that this schema.rb definition is the authoritative source for your
|
|
7
|
+
# database schema. If you need to create the application database on another
|
|
8
|
+
# system, you should be using db:schema:load, not running all the migrations
|
|
9
|
+
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
|
10
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
|
11
|
+
#
|
|
12
|
+
# It's strongly recommended that you check this file into your version control system.
|
|
13
|
+
|
|
14
|
+
ActiveRecord::Schema.define(version: 20160728235100) do
|
|
15
|
+
|
|
16
|
+
# These are extensions that must be enabled in order to support this database
|
|
17
|
+
enable_extension "plpgsql"
|
|
18
|
+
|
|
19
|
+
create_table "conversions", force: :cascade do |t|
|
|
20
|
+
t.string "email"
|
|
21
|
+
t.datetime "created_at", null: false
|
|
22
|
+
t.datetime "updated_at", null: false
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
data/project/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)
|
|
File without changes
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
def run(cmd, quiet=true)
|
|
4
|
+
puts "Running #{cmd}" if ENV['DEBUG'] == 'true'
|
|
5
|
+
command = [cmd]
|
|
6
|
+
command << "&>/dev/null" if quiet
|
|
7
|
+
system(command.join(' '))
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
namespace :heroku do
|
|
11
|
+
desc 'Pull down production database'
|
|
12
|
+
task :import => ['heroku:dump:postgres', 'heroku:import:postgres'] do
|
|
13
|
+
puts "Done"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
namespace :capture do
|
|
17
|
+
task :postgres do
|
|
18
|
+
puts "Capturing Production Backup ..."
|
|
19
|
+
run("heroku pg:backups capture --app __PROJECT_NAME__", false)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
namespace :dump do
|
|
24
|
+
task :postgres do
|
|
25
|
+
Rake::Task["heroku:capture:postgres"].execute if ENV['CAPTURE']
|
|
26
|
+
puts "Loading Production Dump ..."
|
|
27
|
+
run("curl -o tmp/latest.dump `heroku pg:backups public-url --app __PROJECT_NAME__`")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
task :clean do
|
|
31
|
+
run("rm tmp/latest.dump")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
namespace :import do
|
|
36
|
+
task :postgres => ['kill_postgres_connections','db:drop','db:create'] do
|
|
37
|
+
config = Rails.configuration.database_configuration
|
|
38
|
+
host = config[Rails.env]["host"]
|
|
39
|
+
database = config[Rails.env]["database"]
|
|
40
|
+
username = config[Rails.env]["username"]
|
|
41
|
+
password = config[Rails.env]["password"]
|
|
42
|
+
|
|
43
|
+
puts "Importing to #{database} ..."
|
|
44
|
+
|
|
45
|
+
cmd = ["pg_restore --verbose --clean --no-acl --no-owner"]
|
|
46
|
+
cmd << "-h #{host}" if host.present?
|
|
47
|
+
cmd << "-U #{username}" if username.present?
|
|
48
|
+
cmd << "-p #{password}" if password.present?
|
|
49
|
+
cmd << "-d #{database}"
|
|
50
|
+
cmd << "tmp/latest.dump"
|
|
51
|
+
run(cmd.join(' '))
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
task :kill_postgres_connections => :environment do
|
|
55
|
+
env = "development"
|
|
56
|
+
db_config = Rails.configuration.database_configuration[env]
|
|
57
|
+
fail(ArgumentError, "Could not find db config entry for env (#{env})") unless db_config
|
|
58
|
+
db_name = db_config['database']
|
|
59
|
+
|
|
60
|
+
# thanks to http://stackoverflow.com/questions/12924466/capistrano-with-postgresql-error-database-is-being-accessed-by-other-users
|
|
61
|
+
# previously, we were kill'ing the postgres processes: http://stackoverflow.com/questions/2369744/rails-postgres-drop-error-database-is-being-accessed-by-other-users
|
|
62
|
+
cmd = %(psql -c "SELECT pid, pg_terminate_backend(pid) as terminated FROM pg_stat_activity WHERE pid <> pg_backend_pid();" -d '#{db_name}')
|
|
63
|
+
|
|
64
|
+
unless run(cmd)
|
|
65
|
+
fail $?.inspect
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
end
|
data/project/log/.keep
ADDED
|
File without changes
|