mvpkit 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/bin/mvp
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
command = ARGV[0]
|
4
|
+
|
5
|
+
error(%%
|
6
|
+
No command specified, please use one of the following
|
7
|
+
new: start a new project
|
8
|
+
update: update mvp inside current project
|
9
|
+
%) unless command
|
10
|
+
|
11
|
+
case command.downcase
|
12
|
+
when 'new'
|
13
|
+
project = if ARGV[1]
|
14
|
+
ARGV[1]
|
15
|
+
else
|
16
|
+
$stdin.reopen(File.open("/dev/tty", "r"))
|
17
|
+
print "Project name? "
|
18
|
+
STDIN.gets.chomp
|
19
|
+
end
|
20
|
+
|
21
|
+
error('Must specify a project name') if project == ""
|
22
|
+
|
23
|
+
slug = slugify(project)
|
24
|
+
|
25
|
+
puts
|
26
|
+
run "cp -r #{File.dirname(__FILE__)}/../project #{slug}"
|
27
|
+
|
28
|
+
puts
|
29
|
+
puts "\n== Initializing Project =="
|
30
|
+
files = Dir.glob("#{slug}/**/*").select { |f| File.file?(f) }
|
31
|
+
files.each do |file_name|
|
32
|
+
begin
|
33
|
+
puts "Replacing #{file_name}"
|
34
|
+
text = File.read(file_name)
|
35
|
+
new_contents = text.gsub(/__PROJECT_NAME__/, project)
|
36
|
+
.gsub(/__PROJECT_NAME_SLUG__/, slug)
|
37
|
+
|
38
|
+
File.open(file_name, "w") {|file| file.puts new_contents }
|
39
|
+
rescue
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
run "cd #{slug} && rm -rf .git && git init"
|
44
|
+
|
45
|
+
run "cd #{slug}; bin/setup", "\n== Project Setup"
|
46
|
+
|
47
|
+
when 'update'
|
48
|
+
run "bundle update minimum_viable_product"
|
49
|
+
# npm has a bug where it won't update new dependencies
|
50
|
+
# https://github.com/npm/npm/issues/1341
|
51
|
+
run "rm -rf node_modules; npm install"
|
52
|
+
when '-v','version'
|
53
|
+
version = File.read(File.dirname(__FILE__) + '/../VERSION')
|
54
|
+
puts "Version #{version}"
|
55
|
+
end
|
56
|
+
|
57
|
+
BEGIN {
|
58
|
+
def slugify(name)
|
59
|
+
slug = name.gsub(/'/, '').gsub(/[^a-z0-9]+/, '_')
|
60
|
+
slug.chop! if slug[-1] == '-'
|
61
|
+
slug
|
62
|
+
end
|
63
|
+
|
64
|
+
def error(message)
|
65
|
+
puts
|
66
|
+
puts "Error: #{message}"
|
67
|
+
exit 1
|
68
|
+
end
|
69
|
+
|
70
|
+
def run(cmd, message=nil)
|
71
|
+
if message
|
72
|
+
puts
|
73
|
+
puts message
|
74
|
+
end
|
75
|
+
|
76
|
+
system cmd
|
77
|
+
end
|
78
|
+
}
|
data/bin/rails
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
|
3
|
+
|
4
|
+
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
5
|
+
ENGINE_PATH = File.expand_path('../../lib/minimum_viable_product/engine', __FILE__)
|
6
|
+
|
7
|
+
# Set up gems listed in the Gemfile.
|
8
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
9
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
10
|
+
|
11
|
+
require 'rails/all'
|
12
|
+
require 'rails/engine/commands'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module MinimumViableProduct
|
2
|
+
module Iteration
|
3
|
+
CONFIG_FILE = File.join(Rails.root, '.iteration')
|
4
|
+
|
5
|
+
class << self
|
6
|
+
def write(json)
|
7
|
+
_file = File.open( CONFIG_FILE, "w+" )
|
8
|
+
_file.write(JSON.pretty_generate(json))
|
9
|
+
_file.close
|
10
|
+
|
11
|
+
@config = json
|
12
|
+
end
|
13
|
+
|
14
|
+
def read
|
15
|
+
@config ||= begin
|
16
|
+
JSON.parse( IO.read(CONFIG_FILE), symbolize_names: false )
|
17
|
+
rescue
|
18
|
+
write({'version' => '0.0.1'})
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def bump!(bump)
|
23
|
+
config = read
|
24
|
+
config['version'] = Semantic::Version.new(config['version']).increment!(bump.downcase.to_sym).to_s
|
25
|
+
write(config)
|
26
|
+
end
|
27
|
+
|
28
|
+
def version
|
29
|
+
read["version"]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
ENV['PROJECT_NAME'] ||= JSON.parse(Rails.root.join('package.json').read)["name"]
|
@@ -0,0 +1,59 @@
|
|
1
|
+
if ENV['ROLLBAR_SERVER_ACCESS_TOKEN']
|
2
|
+
Rollbar.configure do |config|
|
3
|
+
# Without configuration, Rollbar is enabled in all environments.
|
4
|
+
# To disable in specific environments, set config.enabled=false.
|
5
|
+
|
6
|
+
config.access_token = ENV['ROLLBAR_SERVER_ACCESS_TOKEN']
|
7
|
+
|
8
|
+
# Here we'll disable in 'test':
|
9
|
+
if Rails.env.test?
|
10
|
+
config.enabled = false
|
11
|
+
end
|
12
|
+
|
13
|
+
# By default, Rollbar will try to call the `current_user` controller method
|
14
|
+
# to fetch the logged-in user object, and then call that object's `id`,
|
15
|
+
# `username`, and `email` methods to fetch those properties. To customize:
|
16
|
+
# config.person_method = "my_current_user"
|
17
|
+
# config.person_id_method = "my_id"
|
18
|
+
# config.person_username_method = "my_username"
|
19
|
+
# config.person_email_method = "my_email"
|
20
|
+
|
21
|
+
# If you want to attach custom data to all exception and message reports,
|
22
|
+
# provide a lambda like the following. It should return a hash.
|
23
|
+
# config.custom_data_method = lambda { {:some_key => "some_value" } }
|
24
|
+
|
25
|
+
# Add exception class names to the exception_level_filters hash to
|
26
|
+
# change the level that exception is reported at. Note that if an exception
|
27
|
+
# has already been reported and logged the level will need to be changed
|
28
|
+
# via the rollbar interface.
|
29
|
+
# Valid levels: 'critical', 'error', 'warning', 'info', 'debug', 'ignore'
|
30
|
+
# 'ignore' will cause the exception to not be reported at all.
|
31
|
+
# config.exception_level_filters.merge!('MyCriticalException' => 'critical')
|
32
|
+
#
|
33
|
+
# You can also specify a callable, which will be called with the exception instance.
|
34
|
+
# config.exception_level_filters.merge!('MyCriticalException' => lambda { |e| 'critical' })
|
35
|
+
|
36
|
+
# Enable asynchronous reporting (uses girl_friday or Threading if girl_friday
|
37
|
+
# is not installed)
|
38
|
+
# config.use_async = true
|
39
|
+
# Supply your own async handler:
|
40
|
+
# config.async_handler = Proc.new { |payload|
|
41
|
+
# Thread.new { Rollbar.process_from_async_handler(payload) }
|
42
|
+
# }
|
43
|
+
|
44
|
+
# Enable asynchronous reporting (using sucker_punch)
|
45
|
+
# config.use_sucker_punch
|
46
|
+
|
47
|
+
# Enable delayed reporting (using Sidekiq)
|
48
|
+
# config.use_sidekiq
|
49
|
+
# You can supply custom Sidekiq options:
|
50
|
+
# config.use_sidekiq 'queue' => 'default'
|
51
|
+
|
52
|
+
# If you run your staging application instance in production environment then
|
53
|
+
# you'll want to override the environment reported by `Rails.env` with an
|
54
|
+
# environment variable like this: `ROLLBAR_ENV=staging`. This is a recommended
|
55
|
+
# setup for Heroku. See:
|
56
|
+
# https://devcenter.heroku.com/articles/deploying-to-a-custom-rails-environment
|
57
|
+
config.environment = ENV['ROLLBAR_ENV'] || Rails.env
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
_options = {}
|
2
|
+
_options[:protocol] = ENV['HOST_PROTOCOL'] || (ENV['FORCE_SSL'].to_b ? "https" : "http")
|
3
|
+
_options[:host] = ENV['HOST_DOMAIN']
|
4
|
+
_options[:port] = ENV['HOST_PORT']
|
5
|
+
|
6
|
+
Rails.application.routes.default_url_options = _options
|
7
|
+
MVP::Engine.routes.default_url_options = _options
|
@@ -0,0 +1,33 @@
|
|
1
|
+
if ENV['SPOOF_IP'] =~ /^(true|t|yes|y)$/
|
2
|
+
Rails.application.config.middleware.use 'SpoofIpMiddleware', ENV['SPOOF_IP'] # will use whatismyipaddress.com if not set
|
3
|
+
end
|
4
|
+
|
5
|
+
BEGIN {
|
6
|
+
class SpoofIpMiddleware
|
7
|
+
require 'open-uri'
|
8
|
+
|
9
|
+
def initialize(app, ip)
|
10
|
+
@app = app
|
11
|
+
@ip = if /\d{2,3}\.\d{2,3}\.\d{2,3}\.\d{2,3}/.match(ip)
|
12
|
+
ip
|
13
|
+
else
|
14
|
+
f = open('http://whatismyipaddress.com/')
|
15
|
+
body = f.read
|
16
|
+
/\d{2,3}\.\d{2,3}\.\d{2,3}\.\d{2,3}/i.match(body).to_s
|
17
|
+
end
|
18
|
+
puts %%
|
19
|
+
############## Spoof IP ################
|
20
|
+
# Overriding IP address to #{@ip}
|
21
|
+
########################################
|
22
|
+
%
|
23
|
+
rescue
|
24
|
+
# Service unavailable
|
25
|
+
end
|
26
|
+
|
27
|
+
def call(env)
|
28
|
+
env['REMOTE_ADDR'] = env['action_dispatch.remote_ip'] = @ip
|
29
|
+
@status, @headers, @response = @app.call(env)
|
30
|
+
[@status, @headers, @response]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# case ENV['FORCE_SSL']
|
2
|
+
# when /t|true|yes|y|on/
|
3
|
+
# Rails.application.config.middleware.use SslEnforcerOnlyProtocol, :https_port => ENV['HOST_PORT']
|
4
|
+
# end
|
5
|
+
#
|
6
|
+
# BEGIN {
|
7
|
+
# class SslEnforcerOnlyProtocol < Rack::SslEnforcer
|
8
|
+
# def current_scheme
|
9
|
+
# @request.scheme == 'https'
|
10
|
+
# end
|
11
|
+
# end
|
12
|
+
# }
|
13
|
+
|
14
|
+
Rails.application.config.force_ssl = ENV['FORCE_SSL'].to_b
|
data/config/routes.rb
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
MinimumViableProduct::Engine.routes.draw do
|
2
|
+
get 'robots.txt', to: 'seo#robots', as: :robots
|
3
|
+
get '/sitemap.xml.gz', to: redirect("https://#{ENV['AWS_S3_BUCKET']}.s3.amazonaws.com/#{Rails.application.class.parent_name.underscore}/sitemaps/sitemap.xml.gz"), as: :sitemap
|
4
|
+
|
5
|
+
get 'analytics/optout', to: 'analytics#optout'
|
6
|
+
end
|
data/lib/mvp/engine.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'carrierwave'
|
2
|
+
require 'cloudinary'
|
3
|
+
require 'faraday'
|
4
|
+
require 'fog'
|
5
|
+
require 'geocoder'
|
6
|
+
require 'hashie'
|
7
|
+
require 'rack-canonical-host'
|
8
|
+
require 'rack-ssl-enforcer'
|
9
|
+
require 'rollbar'
|
10
|
+
require 'sitemap_generator'
|
11
|
+
require 'slack-notifier'
|
12
|
+
|
13
|
+
require_relative './ext/nil'
|
14
|
+
require_relative './ext/string'
|
15
|
+
|
16
|
+
module MVP
|
17
|
+
class Engine < ::Rails::Engine
|
18
|
+
isolate_namespace MVP
|
19
|
+
# config.autoload_paths << "#{Rails.root}/app"
|
20
|
+
# config.autoload_paths << "#{Rails.root}/lib"
|
21
|
+
end
|
22
|
+
end
|
data/lib/mvp/ext/nil.rb
ADDED
data/lib/mvpkit.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'fog'
|
2
|
+
|
3
|
+
namespace :sitemap do
|
4
|
+
desc 'Upload the sitemap files to S3'
|
5
|
+
task upload: :environment do
|
6
|
+
puts "Starting sitemap upload to S3..."
|
7
|
+
|
8
|
+
connection = Fog::Storage.new({
|
9
|
+
:provider => 'AWS',
|
10
|
+
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
|
11
|
+
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
|
12
|
+
})
|
13
|
+
|
14
|
+
directory = connection.directories.get(ENV['AWS_S3_BUCKET'])
|
15
|
+
|
16
|
+
Dir.entries(File.join(Rails.root, "tmp", "sitemaps")).each do |file_name|
|
17
|
+
next if ['.', '..', '.DS_Store'].include? file_name
|
18
|
+
path = "#{Rails.application.class.parent_name.underscore}/sitemaps/#{file_name}"
|
19
|
+
file = File.new(File.join(Rails.root, "tmp", "sitemaps", file_name))
|
20
|
+
|
21
|
+
begin
|
22
|
+
file = directory.files.create(
|
23
|
+
:body => file,
|
24
|
+
:key => path,
|
25
|
+
:public => true
|
26
|
+
)
|
27
|
+
# object = bucket.objects[path]
|
28
|
+
# object.write(file: file)
|
29
|
+
rescue Exception => e
|
30
|
+
raise e
|
31
|
+
end
|
32
|
+
puts "Saved #{file_name} to S3"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
desc 'Create the sitemap, then upload it to S3 and ping the search engines'
|
37
|
+
task worker: :environment do
|
38
|
+
Rake::Task["sitemap:create"].invoke
|
39
|
+
Rake::Task["sitemap:upload"].invoke
|
40
|
+
SitemapGenerator::Sitemap.ping_search_engines(MVP::Engine.routes.url_helpers.sitemap_url)
|
41
|
+
end
|
42
|
+
end
|
data/mvpkit.gemspec
ADDED
@@ -0,0 +1,245 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: mvpkit 0.8.0 ruby lib
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "mvpkit"
|
9
|
+
s.version = "0.8.0"
|
10
|
+
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
13
|
+
s.authors = ["Ian Hunter"]
|
14
|
+
s.date = "2017-03-14"
|
15
|
+
s.description = "Built for Developers. Ideal for MVPs, product ideation and validation."
|
16
|
+
s.email = "ianhunter@gmail.com"
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"LICENSE.txt",
|
19
|
+
"README.md"
|
20
|
+
]
|
21
|
+
s.files = [
|
22
|
+
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"MIT-LICENSE",
|
26
|
+
"README.md",
|
27
|
+
"Rakefile",
|
28
|
+
"VERSION",
|
29
|
+
"app/assets/javascripts/mvp/application.js",
|
30
|
+
"app/assets/stylesheets/mvp/application.scss",
|
31
|
+
"app/controllers/concerns/mvp/analytics_concern.rb",
|
32
|
+
"app/controllers/concerns/mvp/seo_concern.rb",
|
33
|
+
"app/controllers/concerns/mvp/session_concern.rb",
|
34
|
+
"app/controllers/mvp/analytics_controller.rb",
|
35
|
+
"app/controllers/mvp/seo_controller.rb",
|
36
|
+
"app/controllers/mvp/styleguide_controller.rb",
|
37
|
+
"app/helpers/minimum_viable_product/body_helper.rb",
|
38
|
+
"app/helpers/minimum_viable_product/bootstrap_helper.rb",
|
39
|
+
"app/helpers/minimum_viable_product/styleguide_helper.rb",
|
40
|
+
"app/models/concerns/mvp/slugification.rb",
|
41
|
+
"app/views/layouts/minimum_viable_product/_instrumentation.html.erb",
|
42
|
+
"app/views/layouts/minimum_viable_product/_meta.html.erb",
|
43
|
+
"app/views/layouts/minimum_viable_product/application.html.erb",
|
44
|
+
"app/views/minimum_viable_product/styleguide/_example.html.erb",
|
45
|
+
"app/views/minimum_viable_product/styleguide/bootstrap.html.erb",
|
46
|
+
"app/views/minimum_viable_product/styleguide/bootstrap/_buttons.html.erb",
|
47
|
+
"app/views/minimum_viable_product/styleguide/bootstrap/_forms.html.erb",
|
48
|
+
"app/views/minimum_viable_product/styleguide/bootstrap/_header.html.erb",
|
49
|
+
"app/views/minimum_viable_product/styleguide/bootstrap/_panels.html.erb",
|
50
|
+
"app/views/minimum_viable_product/styleguide/bootstrap/_tables.html.erb",
|
51
|
+
"app/views/minimum_viable_product/styleguide/bootstrap/_typography.html.erb",
|
52
|
+
"app/views/minimum_viable_product/styleguide/elements/_grouping.html.erb",
|
53
|
+
"app/views/minimum_viable_product/styleguide/elements/partials/_row_groups_of.html.erb",
|
54
|
+
"app/views/minimum_viable_product/styleguide/index.html.erb",
|
55
|
+
"app/views/minimum_viable_product/styleguide/layouts/basic.html.erb",
|
56
|
+
"app/views/minimum_viable_product/styleguide/layouts/carousel.html.erb",
|
57
|
+
"app/views/minimum_viable_product/styleguide/layouts/cover.html.erb",
|
58
|
+
"assets/js/application.js",
|
59
|
+
"assets/js/init/controllers.js",
|
60
|
+
"assets/js/init/forms.js",
|
61
|
+
"bin/mvp",
|
62
|
+
"bin/rails",
|
63
|
+
"config/initializers/assets.rb",
|
64
|
+
"config/initializers/canonical_host.rb",
|
65
|
+
"config/initializers/cloudinary.rb",
|
66
|
+
"config/initializers/geocoder.rb",
|
67
|
+
"config/initializers/iteration.rb",
|
68
|
+
"config/initializers/project.rb",
|
69
|
+
"config/initializers/rollbar.rb",
|
70
|
+
"config/initializers/routing.rb",
|
71
|
+
"config/initializers/spoof_ip.rb",
|
72
|
+
"config/initializers/ssl.rb",
|
73
|
+
"config/routes.rb",
|
74
|
+
"lib/mvp/engine.rb",
|
75
|
+
"lib/mvp/ext/nil.rb",
|
76
|
+
"lib/mvp/ext/string.rb",
|
77
|
+
"lib/mvpkit.rb",
|
78
|
+
"lib/tasks/sitemap.rake",
|
79
|
+
"mvpkit.gemspec",
|
80
|
+
"package.json",
|
81
|
+
"project/.gitignore",
|
82
|
+
"project/Gemfile",
|
83
|
+
"project/Gemfile.lock",
|
84
|
+
"project/Procfile",
|
85
|
+
"project/README.md",
|
86
|
+
"project/Rakefile",
|
87
|
+
"project/app/controllers/application_controller.rb",
|
88
|
+
"project/app/controllers/conversions_controller.rb",
|
89
|
+
"project/app/controllers/examples_controller.rb",
|
90
|
+
"project/app/controllers/home_controller.rb",
|
91
|
+
"project/app/decorators/.keep",
|
92
|
+
"project/app/helpers/application_helper.rb",
|
93
|
+
"project/app/mailers/.keep",
|
94
|
+
"project/app/models/conversion.rb",
|
95
|
+
"project/app/views/examples/index.html.erb",
|
96
|
+
"project/app/views/examples/mustache.html.erb",
|
97
|
+
"project/app/views/examples/mustache/template.mustache",
|
98
|
+
"project/app/views/home/conversion.html.erb",
|
99
|
+
"project/app/views/home/index.html.erb",
|
100
|
+
"project/app/views/layouts/_header.html.erb",
|
101
|
+
"project/app/views/layouts/_includes.html.erb",
|
102
|
+
"project/app/views/layouts/application.html.erb",
|
103
|
+
"project/app/views/layouts/modal.html.erb",
|
104
|
+
"project/assets/images/.keep",
|
105
|
+
"project/assets/images/favicon.ico",
|
106
|
+
"project/assets/javascripts/controllers/home.coffee",
|
107
|
+
"project/assets/javascripts/pack.js",
|
108
|
+
"project/assets/stylesheets/config/variables.scss",
|
109
|
+
"project/assets/stylesheets/layout/basic.scss",
|
110
|
+
"project/assets/stylesheets/layout/carousel.scss",
|
111
|
+
"project/assets/stylesheets/layout/cover.scss",
|
112
|
+
"project/assets/stylesheets/lib/spacing.scss",
|
113
|
+
"project/assets/stylesheets/skin/style.scss",
|
114
|
+
"project/assets/stylesheets/style.scss",
|
115
|
+
"project/bin/bundle",
|
116
|
+
"project/bin/rails",
|
117
|
+
"project/bin/rake",
|
118
|
+
"project/bin/setup",
|
119
|
+
"project/bin/spring",
|
120
|
+
"project/config.ru",
|
121
|
+
"project/config/application.rb",
|
122
|
+
"project/config/boot.rb",
|
123
|
+
"project/config/database.yml",
|
124
|
+
"project/config/environment.rb",
|
125
|
+
"project/config/environments/development.rb",
|
126
|
+
"project/config/environments/production.rb",
|
127
|
+
"project/config/environments/test.rb",
|
128
|
+
"project/config/initializers/assets.rb",
|
129
|
+
"project/config/initializers/backtrace_silencers.rb",
|
130
|
+
"project/config/initializers/cookies_serializer.rb",
|
131
|
+
"project/config/initializers/filter_parameter_logging.rb",
|
132
|
+
"project/config/initializers/inflections.rb",
|
133
|
+
"project/config/initializers/mime_types.rb",
|
134
|
+
"project/config/initializers/mustache.rb",
|
135
|
+
"project/config/initializers/rails_admin.rb",
|
136
|
+
"project/config/initializers/session_store.rb",
|
137
|
+
"project/config/initializers/simple_form.rb",
|
138
|
+
"project/config/initializers/wrap_parameters.rb",
|
139
|
+
"project/config/locales/en.yml",
|
140
|
+
"project/config/locales/simple_form.en.yml",
|
141
|
+
"project/config/routes.rb",
|
142
|
+
"project/config/secrets.yml",
|
143
|
+
"project/config/sitemap.rb",
|
144
|
+
"project/db/migrate/20160728235100_create_conversions.rb",
|
145
|
+
"project/db/schema.rb",
|
146
|
+
"project/db/seeds.rb",
|
147
|
+
"project/lib/assets/.keep",
|
148
|
+
"project/lib/tasks/heroku.rake",
|
149
|
+
"project/log/.keep",
|
150
|
+
"project/log/development.log",
|
151
|
+
"project/log/production.log",
|
152
|
+
"project/package.json",
|
153
|
+
"project/public/404.html",
|
154
|
+
"project/public/422.html",
|
155
|
+
"project/public/500.html",
|
156
|
+
"project/public/assets/javascripts/448c34a56d699c29117adc64c43affeb.woff2",
|
157
|
+
"project/public/assets/javascripts/89889688147bd7575d6327160d64e760.svg",
|
158
|
+
"project/public/assets/javascripts/e18bbf611f2a2e43afc071aa2f4e1512.ttf",
|
159
|
+
"project/public/assets/javascripts/f4769f9bdb7466be65088239c12046d1.eot",
|
160
|
+
"project/public/assets/javascripts/fa2772327f55d8198301fdb8bcfc8158.woff",
|
161
|
+
"project/public/assets/javascripts/pack.js",
|
162
|
+
"project/public/assets/javascripts/pack.js.map",
|
163
|
+
"project/public/assets/pack.js",
|
164
|
+
"project/public/assets/style.css",
|
165
|
+
"project/vendor/assets/javascripts/.keep",
|
166
|
+
"project/vendor/assets/stylesheets/.keep",
|
167
|
+
"project/webpack.config.js",
|
168
|
+
"test/helper.rb",
|
169
|
+
"test/test_minimum_viable_product.rb"
|
170
|
+
]
|
171
|
+
s.homepage = "http://github.com/ian/mvp"
|
172
|
+
s.licenses = ["MIT"]
|
173
|
+
s.rubygems_version = "2.5.1"
|
174
|
+
s.summary = "The start-to-finish 3 minute product platform"
|
175
|
+
|
176
|
+
if s.respond_to? :specification_version then
|
177
|
+
s.specification_version = 4
|
178
|
+
|
179
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
180
|
+
s.add_runtime_dependency(%q<carrierwave>, [">= 0"])
|
181
|
+
s.add_runtime_dependency(%q<cloudinary>, [">= 0"])
|
182
|
+
s.add_runtime_dependency(%q<geocoder>, [">= 0"])
|
183
|
+
s.add_runtime_dependency(%q<faraday>, [">= 0"])
|
184
|
+
s.add_runtime_dependency(%q<fog>, [">= 0"])
|
185
|
+
s.add_runtime_dependency(%q<fog-aws>, [">= 0"])
|
186
|
+
s.add_runtime_dependency(%q<hashie>, [">= 0"])
|
187
|
+
s.add_runtime_dependency(%q<rack-canonical-host>, [">= 0"])
|
188
|
+
s.add_runtime_dependency(%q<rack-ssl-enforcer>, [">= 0"])
|
189
|
+
s.add_runtime_dependency(%q<rollbar>, [">= 0"])
|
190
|
+
s.add_runtime_dependency(%q<sass-rails>, ["~> 5.0"])
|
191
|
+
s.add_runtime_dependency(%q<sitemap_generator>, [">= 0"])
|
192
|
+
s.add_runtime_dependency(%q<slack-notifier>, [">= 0"])
|
193
|
+
s.add_development_dependency(%q<byebug>, [">= 0"])
|
194
|
+
s.add_development_dependency(%q<better_errors>, [">= 0"])
|
195
|
+
s.add_development_dependency(%q<binding_of_caller>, [">= 0"])
|
196
|
+
s.add_development_dependency(%q<bullet>, [">= 0"])
|
197
|
+
s.add_development_dependency(%q<semantic>, [">= 0"])
|
198
|
+
s.add_development_dependency(%q<web-console>, ["~> 2.0"])
|
199
|
+
s.add_development_dependency(%q<jeweler>, ["~> 2.3.2"])
|
200
|
+
else
|
201
|
+
s.add_dependency(%q<carrierwave>, [">= 0"])
|
202
|
+
s.add_dependency(%q<cloudinary>, [">= 0"])
|
203
|
+
s.add_dependency(%q<geocoder>, [">= 0"])
|
204
|
+
s.add_dependency(%q<faraday>, [">= 0"])
|
205
|
+
s.add_dependency(%q<fog>, [">= 0"])
|
206
|
+
s.add_dependency(%q<fog-aws>, [">= 0"])
|
207
|
+
s.add_dependency(%q<hashie>, [">= 0"])
|
208
|
+
s.add_dependency(%q<rack-canonical-host>, [">= 0"])
|
209
|
+
s.add_dependency(%q<rack-ssl-enforcer>, [">= 0"])
|
210
|
+
s.add_dependency(%q<rollbar>, [">= 0"])
|
211
|
+
s.add_dependency(%q<sass-rails>, ["~> 5.0"])
|
212
|
+
s.add_dependency(%q<sitemap_generator>, [">= 0"])
|
213
|
+
s.add_dependency(%q<slack-notifier>, [">= 0"])
|
214
|
+
s.add_dependency(%q<byebug>, [">= 0"])
|
215
|
+
s.add_dependency(%q<better_errors>, [">= 0"])
|
216
|
+
s.add_dependency(%q<binding_of_caller>, [">= 0"])
|
217
|
+
s.add_dependency(%q<bullet>, [">= 0"])
|
218
|
+
s.add_dependency(%q<semantic>, [">= 0"])
|
219
|
+
s.add_dependency(%q<web-console>, ["~> 2.0"])
|
220
|
+
s.add_dependency(%q<jeweler>, ["~> 2.3.2"])
|
221
|
+
end
|
222
|
+
else
|
223
|
+
s.add_dependency(%q<carrierwave>, [">= 0"])
|
224
|
+
s.add_dependency(%q<cloudinary>, [">= 0"])
|
225
|
+
s.add_dependency(%q<geocoder>, [">= 0"])
|
226
|
+
s.add_dependency(%q<faraday>, [">= 0"])
|
227
|
+
s.add_dependency(%q<fog>, [">= 0"])
|
228
|
+
s.add_dependency(%q<fog-aws>, [">= 0"])
|
229
|
+
s.add_dependency(%q<hashie>, [">= 0"])
|
230
|
+
s.add_dependency(%q<rack-canonical-host>, [">= 0"])
|
231
|
+
s.add_dependency(%q<rack-ssl-enforcer>, [">= 0"])
|
232
|
+
s.add_dependency(%q<rollbar>, [">= 0"])
|
233
|
+
s.add_dependency(%q<sass-rails>, ["~> 5.0"])
|
234
|
+
s.add_dependency(%q<sitemap_generator>, [">= 0"])
|
235
|
+
s.add_dependency(%q<slack-notifier>, [">= 0"])
|
236
|
+
s.add_dependency(%q<byebug>, [">= 0"])
|
237
|
+
s.add_dependency(%q<better_errors>, [">= 0"])
|
238
|
+
s.add_dependency(%q<binding_of_caller>, [">= 0"])
|
239
|
+
s.add_dependency(%q<bullet>, [">= 0"])
|
240
|
+
s.add_dependency(%q<semantic>, [">= 0"])
|
241
|
+
s.add_dependency(%q<web-console>, ["~> 2.0"])
|
242
|
+
s.add_dependency(%q<jeweler>, ["~> 2.3.2"])
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
data/package.json
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
{
|
2
|
+
"name": "mvpkit",
|
3
|
+
"private": true,
|
4
|
+
"version": "1.0.0",
|
5
|
+
"description": "= MVP",
|
6
|
+
"main": "index.js",
|
7
|
+
"directories": {
|
8
|
+
"test": "test"
|
9
|
+
},
|
10
|
+
"scripts": {
|
11
|
+
"postinstall": "rm -rf app"
|
12
|
+
},
|
13
|
+
"repository": {
|
14
|
+
"type": "git",
|
15
|
+
"url": "git+https://github.com/ian/minimum_viable_product.git"
|
16
|
+
},
|
17
|
+
"author": "",
|
18
|
+
"license": "ISC",
|
19
|
+
"bugs": {
|
20
|
+
"url": "https://github.com/ian/minimum_viable_product/issues"
|
21
|
+
},
|
22
|
+
"homepage": "https://github.com/ian/minimum_viable_product#readme",
|
23
|
+
"dependencies": {
|
24
|
+
"coffee-loader": "^0.7.2",
|
25
|
+
"coffee-script": "^1.10.0",
|
26
|
+
"css-loader": "^0.24.0",
|
27
|
+
"es6-loader": "^0.2.0",
|
28
|
+
"extract-text-webpack-plugin": "^1.0.1",
|
29
|
+
"file-loader": "^0.9.0",
|
30
|
+
"font-awesome": "^4.6.3",
|
31
|
+
"is": "^3.1.0",
|
32
|
+
"jquery": "^3.1.0",
|
33
|
+
"jquery-ujs": "^1.2.2",
|
34
|
+
"jquery.cookie": "^1.4.1",
|
35
|
+
"lodash": "^4.14.1",
|
36
|
+
"node-sass": "^3.8.0",
|
37
|
+
"resolve-url": "^0.2.1",
|
38
|
+
"resolve-url-loader": "^1.6.0",
|
39
|
+
"sass-loader": "^4.0.1",
|
40
|
+
"style-loader": "^0.13.1",
|
41
|
+
"webpack": "^1.13.2"
|
42
|
+
}
|
43
|
+
}
|