minimum_viable_product 0.6.7 → 0.7.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 +4 -4
- data/VERSION +1 -1
- data/bin/mvp +2 -3
- data/minimum_viable_product.gemspec +89 -3
- 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.html.erb +18 -0
- data/project/app/views/examples/mustache/template.mustache +1 -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.ru +4 -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/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
- metadata +88 -2
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/* GLOBAL STYLES
|
|
2
|
+
-------------------------------------------------- */
|
|
3
|
+
/* Padding below the footer and lighter body text */
|
|
4
|
+
|
|
5
|
+
body.body-carousel {
|
|
6
|
+
/* Special class on .container surrounding .navbar, used for positioning it into place. */
|
|
7
|
+
.navbar-wrapper {
|
|
8
|
+
position: absolute;
|
|
9
|
+
top: 0;
|
|
10
|
+
right: 0;
|
|
11
|
+
left: 0;
|
|
12
|
+
z-index: 20;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Flip around the padding for proper display in narrow viewports */
|
|
16
|
+
.navbar-wrapper > .container {
|
|
17
|
+
padding-right: 0;
|
|
18
|
+
padding-left: 0;
|
|
19
|
+
}
|
|
20
|
+
.navbar-wrapper .navbar {
|
|
21
|
+
padding-right: 15px;
|
|
22
|
+
padding-left: 15px;
|
|
23
|
+
}
|
|
24
|
+
.navbar-wrapper .navbar .container {
|
|
25
|
+
width: auto;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
/* CUSTOMIZE THE CAROUSEL
|
|
30
|
+
-------------------------------------------------- */
|
|
31
|
+
|
|
32
|
+
/* Carousel base class */
|
|
33
|
+
.carousel {
|
|
34
|
+
height: 500px;
|
|
35
|
+
}
|
|
36
|
+
/* Since positioning the image, we need to help out the caption */
|
|
37
|
+
.carousel-caption {
|
|
38
|
+
z-index: 10;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* Declare heights because of positioning of img element */
|
|
42
|
+
.carousel .item {
|
|
43
|
+
height: 500px;
|
|
44
|
+
background-color: #777;
|
|
45
|
+
}
|
|
46
|
+
.carousel-inner > .item > img {
|
|
47
|
+
position: absolute;
|
|
48
|
+
top: 0;
|
|
49
|
+
left: 0;
|
|
50
|
+
min-width: 100%;
|
|
51
|
+
height: 500px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
/* MARKETING CONTENT
|
|
56
|
+
-------------------------------------------------- */
|
|
57
|
+
|
|
58
|
+
/* Center align the text within the three columns below the carousel */
|
|
59
|
+
.marketing .col-lg-4 {
|
|
60
|
+
margin-bottom: 20px;
|
|
61
|
+
text-align: center;
|
|
62
|
+
}
|
|
63
|
+
.marketing h2 {
|
|
64
|
+
font-weight: normal;
|
|
65
|
+
}
|
|
66
|
+
.marketing .col-lg-4 p {
|
|
67
|
+
margin-right: 10px;
|
|
68
|
+
margin-left: 10px;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
/* Featurettes
|
|
73
|
+
------------------------- */
|
|
74
|
+
|
|
75
|
+
.featurette-divider {
|
|
76
|
+
margin: 80px 0; /* Space out the Bootstrap <hr> more */
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Thin out the marketing headings */
|
|
80
|
+
.featurette-heading {
|
|
81
|
+
font-weight: 300;
|
|
82
|
+
line-height: 1;
|
|
83
|
+
letter-spacing: -1px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
/* RESPONSIVE CSS
|
|
88
|
+
-------------------------------------------------- */
|
|
89
|
+
|
|
90
|
+
@media (min-width: 768px) {
|
|
91
|
+
/* Navbar positioning foo */
|
|
92
|
+
.navbar-wrapper {
|
|
93
|
+
margin-top: 20px;
|
|
94
|
+
}
|
|
95
|
+
.navbar-wrapper .container {
|
|
96
|
+
padding-right: 15px;
|
|
97
|
+
padding-left: 15px;
|
|
98
|
+
}
|
|
99
|
+
.navbar-wrapper .navbar {
|
|
100
|
+
padding-right: 0;
|
|
101
|
+
padding-left: 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* The navbar becomes detached from the top, so we round the corners */
|
|
105
|
+
.navbar-wrapper .navbar {
|
|
106
|
+
border-radius: 4px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* Bump up size of carousel content */
|
|
110
|
+
.carousel-caption p {
|
|
111
|
+
margin-bottom: 20px;
|
|
112
|
+
font-size: 21px;
|
|
113
|
+
line-height: 1.4;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.featurette-heading {
|
|
117
|
+
font-size: 50px;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@media (min-width: 992px) {
|
|
122
|
+
.featurette-heading {
|
|
123
|
+
margin-top: 120px;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
html {
|
|
2
|
+
height: 100%;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
body.body-cover {
|
|
6
|
+
height: 100%;
|
|
7
|
+
text-align: center;
|
|
8
|
+
|
|
9
|
+
/* Extra markup and styles for table-esque vertical and horizontal centering */
|
|
10
|
+
.site-wrapper {
|
|
11
|
+
display: table;
|
|
12
|
+
width: 100%;
|
|
13
|
+
height: 100%; /* For at least Firefox */
|
|
14
|
+
min-height: 100%;
|
|
15
|
+
}
|
|
16
|
+
.site-wrapper-inner {
|
|
17
|
+
display: table-cell;
|
|
18
|
+
vertical-align: top;
|
|
19
|
+
}
|
|
20
|
+
.cover-container {
|
|
21
|
+
margin-right: auto;
|
|
22
|
+
margin-left: auto;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Padding for spacing */
|
|
26
|
+
.inner {
|
|
27
|
+
padding: 2rem;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
* Header
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
.masthead {
|
|
36
|
+
margin-bottom: 2rem;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.masthead-brand {
|
|
40
|
+
margin-bottom: 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.nav-masthead .nav-link {
|
|
44
|
+
padding: .25rem 0;
|
|
45
|
+
font-weight: bold;
|
|
46
|
+
background-color: transparent;
|
|
47
|
+
border-bottom: .25rem solid transparent;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.nav-masthead .nav-link:hover,
|
|
51
|
+
.nav-masthead .nav-link:focus {
|
|
52
|
+
border-bottom-color: rgba(155,155,155,.25);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.nav-masthead .nav-link + .nav-link {
|
|
56
|
+
margin-left: 1rem;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.nav-masthead .active {
|
|
60
|
+
// color: #fff;
|
|
61
|
+
// border-bottom-color: #fff;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@media (min-width: 48em) {
|
|
65
|
+
.masthead-brand {
|
|
66
|
+
float: left;
|
|
67
|
+
}
|
|
68
|
+
.nav-masthead {
|
|
69
|
+
float: right;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
/*
|
|
75
|
+
* Cover
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
.cover {
|
|
79
|
+
padding: 0 1.5rem;
|
|
80
|
+
}
|
|
81
|
+
.cover .btn-lg {
|
|
82
|
+
padding: .75rem 1.25rem;
|
|
83
|
+
font-weight: bold;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
/*
|
|
88
|
+
* Footer
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
.mastfoot {
|
|
92
|
+
// color: rgba(255,255,255,.5);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
/*
|
|
97
|
+
* Affix and center
|
|
98
|
+
*/
|
|
99
|
+
|
|
100
|
+
@media (min-width: 40em) {
|
|
101
|
+
/* Pull out the header and footer */
|
|
102
|
+
.masthead {
|
|
103
|
+
position: fixed;
|
|
104
|
+
top: 0;
|
|
105
|
+
}
|
|
106
|
+
.mastfoot {
|
|
107
|
+
position: fixed;
|
|
108
|
+
bottom: 0;
|
|
109
|
+
}
|
|
110
|
+
/* Start the vertical centering */
|
|
111
|
+
.site-wrapper-inner {
|
|
112
|
+
vertical-align: middle;
|
|
113
|
+
}
|
|
114
|
+
/* Handle the widths */
|
|
115
|
+
.masthead,
|
|
116
|
+
.mastfoot,
|
|
117
|
+
.cover-container {
|
|
118
|
+
width: 100%; /* Must be percentage or pixels for horizontal alignment */
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@media (min-width: 62em) {
|
|
123
|
+
.masthead,
|
|
124
|
+
.mastfoot,
|
|
125
|
+
.cover-container {
|
|
126
|
+
width: 42rem;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
@import 'bootstrap/scss/bootstrap';
|
|
2
|
+
|
|
3
|
+
@each $breakpoint in map-keys($grid-breakpoints) {
|
|
4
|
+
@include media-breakpoint-up($breakpoint) {
|
|
5
|
+
.block-#{$breakpoint}-up { display: block; width: 100% }
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
@include media-breakpoint-down($breakpoint) {
|
|
9
|
+
.block-#{$breakpoint}-down { display: block; width: 100% }
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@for $i from 0 through 100 {
|
|
14
|
+
.mt#{$i} { margin-top: #{$i}px !important; }
|
|
15
|
+
.mb#{$i} { margin-bottom: #{$i}px !important; }
|
|
16
|
+
.ml#{$i} { margin-left: #{$i}px !important; }
|
|
17
|
+
.mr#{$i} { margin-right: #{$i}px !important; }
|
|
18
|
+
.m#{$i} { margin: #{$i}px !important; }
|
|
19
|
+
|
|
20
|
+
.pt#{$i} { padding-top: #{$i}px !important; }
|
|
21
|
+
.pb#{$i} { padding-bottom: #{$i}px !important; }
|
|
22
|
+
.pl#{$i} { padding-left: #{$i}px !important; }
|
|
23
|
+
.pr#{$i} { padding-right: #{$i}px !important; }
|
|
24
|
+
.p#{$i} { padding: #{$i}px !important; }
|
|
25
|
+
|
|
26
|
+
@each $breakpoint in map-keys($grid-breakpoints) {
|
|
27
|
+
@include media-breakpoint-up($breakpoint) {
|
|
28
|
+
.mt#{$i}-#{$breakpoint}-up { margin-top: #{$i}px !important; }
|
|
29
|
+
.mb#{$i}-#{$breakpoint}-up { margin-bottom: #{$i}px !important; }
|
|
30
|
+
.ml#{$i}-#{$breakpoint}-up { margin-left: #{$i}px !important; }
|
|
31
|
+
.mr#{$i}-#{$breakpoint}-up { margin-right: #{$i}px !important; }
|
|
32
|
+
.m#{$i}-#{$breakpoint}-up { margin: #{$i}px !important; }
|
|
33
|
+
|
|
34
|
+
.pt#{$i}-#{$breakpoint}-up { padding-top: #{$i}px !important; }
|
|
35
|
+
.pb#{$i}-#{$breakpoint}-up { padding-bottom: #{$i}px !important; }
|
|
36
|
+
.pl#{$i}-#{$breakpoint}-up { padding-left: #{$i}px !important; }
|
|
37
|
+
.pr#{$i}-#{$breakpoint}-up { padding-right: #{$i}px !important; }
|
|
38
|
+
.p#{$i}-#{$breakpoint}-up { padding: #{$i}px !important; }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@include media-breakpoint-down($breakpoint) {
|
|
42
|
+
.mt#{$i}-#{$breakpoint}-down { margin-top: #{$i}px !important; }
|
|
43
|
+
.mb#{$i}-#{$breakpoint}-down { margin-bottom: #{$i}px !important; }
|
|
44
|
+
.ml#{$i}-#{$breakpoint}-down { margin-left: #{$i}px !important; }
|
|
45
|
+
.mr#{$i}-#{$breakpoint}-down { margin-right: #{$i}px !important; }
|
|
46
|
+
.m#{$i}-#{$breakpoint}-down { margin: #{$i}px !important; }
|
|
47
|
+
|
|
48
|
+
.pt#{$i}-#{$breakpoint}-down { padding-top: #{$i}px !important; }
|
|
49
|
+
.pb#{$i}-#{$breakpoint}-down { padding-bottom: #{$i}px !important; }
|
|
50
|
+
.pl#{$i}-#{$breakpoint}-down { padding-left: #{$i}px !important; }
|
|
51
|
+
.pr#{$i}-#{$breakpoint}-down { padding-right: #{$i}px !important; }
|
|
52
|
+
.p#{$i}-#{$breakpoint}-down { padding: #{$i}px !important; }
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
data/project/bin/bundle
ADDED
data/project/bin/rails
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
begin
|
|
3
|
+
load File.expand_path('../spring', __FILE__)
|
|
4
|
+
rescue LoadError => e
|
|
5
|
+
raise unless e.message.include?('spring')
|
|
6
|
+
end
|
|
7
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
|
8
|
+
require_relative '../config/boot'
|
|
9
|
+
require 'rails/commands'
|
data/project/bin/rake
ADDED
data/project/bin/setup
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'pathname'
|
|
3
|
+
|
|
4
|
+
# path to your application root.
|
|
5
|
+
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
|
|
6
|
+
|
|
7
|
+
Dir.chdir APP_ROOT do
|
|
8
|
+
# This script is a starting point to setup your application.
|
|
9
|
+
# Add necessary setup steps to this file:
|
|
10
|
+
|
|
11
|
+
puts "== Installing dependencies =="
|
|
12
|
+
system "gem install bundler --conservative"
|
|
13
|
+
system "bundle check || bundle install"
|
|
14
|
+
|
|
15
|
+
# puts "\n== Copying sample files =="
|
|
16
|
+
# unless File.exist?("config/database.yml")
|
|
17
|
+
# system "cp config/database.yml.sample config/database.yml"
|
|
18
|
+
# end
|
|
19
|
+
|
|
20
|
+
puts "\n== Preparing database =="
|
|
21
|
+
system "bin/rake db:setup"
|
|
22
|
+
|
|
23
|
+
puts "\n== Removing old logs and tempfiles =="
|
|
24
|
+
system "rm -f log/*"
|
|
25
|
+
system "rm -rf tmp/cache"
|
|
26
|
+
|
|
27
|
+
puts "\n== Installing Node Modules =="
|
|
28
|
+
system "npm install"
|
|
29
|
+
|
|
30
|
+
puts "\n== Creating .env =="
|
|
31
|
+
system "touch .env"
|
|
32
|
+
end
|
data/project/bin/spring
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# This file loads spring without using Bundler, in order to be fast.
|
|
4
|
+
# It gets overwritten when you run the `spring binstub` command.
|
|
5
|
+
|
|
6
|
+
unless defined?(Spring)
|
|
7
|
+
require 'rubygems'
|
|
8
|
+
require 'bundler'
|
|
9
|
+
|
|
10
|
+
if (match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m))
|
|
11
|
+
Gem.paths = { 'GEM_PATH' => [Bundler.bundle_path.to_s, *Gem.path].uniq.join(Gem.path_separator) }
|
|
12
|
+
gem 'spring', match[1]
|
|
13
|
+
require 'spring/binstub'
|
|
14
|
+
end
|
|
15
|
+
end
|
data/project/config.ru
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
|
2
|
+
|
|
3
|
+
require 'rails/all'
|
|
4
|
+
|
|
5
|
+
# Require the gems listed in Gemfile, including any gems
|
|
6
|
+
# you've limited to :test, :development, or :production.
|
|
7
|
+
Bundler.require(*Rails.groups)
|
|
8
|
+
|
|
9
|
+
module Project
|
|
10
|
+
class Application < Rails::Application
|
|
11
|
+
config.autoload_paths += %W(#{Rails.root}/lib)
|
|
12
|
+
config.active_record.raise_in_transactional_callbacks = true
|
|
13
|
+
config.generators do |g|
|
|
14
|
+
g.helper false
|
|
15
|
+
g.decorator false
|
|
16
|
+
g.controller_specs false
|
|
17
|
+
g.model_specs false
|
|
18
|
+
g.view_specs false
|
|
19
|
+
g.specs false
|
|
20
|
+
g.javascripts false
|
|
21
|
+
g.stylesheets false
|
|
22
|
+
g.test_framework false
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
config.assets.paths << Rails.root.join('node_modules')
|
|
26
|
+
|
|
27
|
+
_host = ENV['HOST_DOMAIN'] || "localhost"
|
|
28
|
+
_port = ENV['HOST_PORT'] || "3000"
|
|
29
|
+
routes.default_url_options = { host: _host, port: _port }
|
|
30
|
+
config.action_mailer.default_url_options = { host: _host, port: _port }
|
|
31
|
+
end
|
|
32
|
+
end
|