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.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +30 -0
  3. data/Gemfile.lock +329 -0
  4. data/LICENSE.txt +20 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +134 -0
  7. data/Rakefile +52 -0
  8. data/VERSION +1 -0
  9. data/app/assets/javascripts/mvp/application.js +1 -0
  10. data/app/assets/stylesheets/mvp/application.scss +0 -0
  11. data/app/controllers/concerns/mvp/analytics_concern.rb +78 -0
  12. data/app/controllers/concerns/mvp/seo_concern.rb +25 -0
  13. data/app/controllers/concerns/mvp/session_concern.rb +44 -0
  14. data/app/controllers/mvp/analytics_controller.rb +12 -0
  15. data/app/controllers/mvp/seo_controller.rb +11 -0
  16. data/app/controllers/mvp/styleguide_controller.rb +23 -0
  17. data/app/helpers/minimum_viable_product/body_helper.rb +14 -0
  18. data/app/helpers/minimum_viable_product/bootstrap_helper.rb +38 -0
  19. data/app/helpers/minimum_viable_product/styleguide_helper.rb +4 -0
  20. data/app/models/concerns/mvp/slugification.rb +24 -0
  21. data/app/views/layouts/minimum_viable_product/_instrumentation.html.erb +100 -0
  22. data/app/views/layouts/minimum_viable_product/_meta.html.erb +37 -0
  23. data/app/views/layouts/minimum_viable_product/application.html.erb +19 -0
  24. data/app/views/minimum_viable_product/styleguide/_example.html.erb +6 -0
  25. data/app/views/minimum_viable_product/styleguide/bootstrap/_buttons.html.erb +191 -0
  26. data/app/views/minimum_viable_product/styleguide/bootstrap/_forms.html.erb +192 -0
  27. data/app/views/minimum_viable_product/styleguide/bootstrap/_header.html.erb +48 -0
  28. data/app/views/minimum_viable_product/styleguide/bootstrap/_panels.html.erb +16 -0
  29. data/app/views/minimum_viable_product/styleguide/bootstrap/_tables.html.erb +34 -0
  30. data/app/views/minimum_viable_product/styleguide/bootstrap/_typography.html.erb +51 -0
  31. data/app/views/minimum_viable_product/styleguide/bootstrap.html.erb +43 -0
  32. data/app/views/minimum_viable_product/styleguide/elements/_grouping.html.erb +1 -0
  33. data/app/views/minimum_viable_product/styleguide/elements/partials/_row_groups_of.html.erb +7 -0
  34. data/app/views/minimum_viable_product/styleguide/index.html.erb +17 -0
  35. data/app/views/minimum_viable_product/styleguide/layouts/basic.html.erb +4 -0
  36. data/app/views/minimum_viable_product/styleguide/layouts/carousel.html.erb +120 -0
  37. data/app/views/minimum_viable_product/styleguide/layouts/cover.html.erb +34 -0
  38. data/assets/js/application.js +31 -0
  39. data/assets/js/init/controllers.js +26 -0
  40. data/assets/js/init/forms.js +12 -0
  41. data/bin/mvp +78 -0
  42. data/bin/rails +12 -0
  43. data/config/initializers/assets.rb +2 -0
  44. data/config/initializers/canonical_host.rb +3 -0
  45. data/config/initializers/cloudinary.rb +7 -0
  46. data/config/initializers/geocoder.rb +9 -0
  47. data/config/initializers/iteration.rb +33 -0
  48. data/config/initializers/project.rb +1 -0
  49. data/config/initializers/rollbar.rb +59 -0
  50. data/config/initializers/routing.rb +7 -0
  51. data/config/initializers/spoof_ip.rb +33 -0
  52. data/config/initializers/ssl.rb +14 -0
  53. data/config/routes.rb +6 -0
  54. data/lib/mvp/engine.rb +22 -0
  55. data/lib/mvp/ext/nil.rb +5 -0
  56. data/lib/mvp/ext/string.rb +7 -0
  57. data/lib/mvpkit.rb +6 -0
  58. data/lib/tasks/sitemap.rake +42 -0
  59. data/mvpkit.gemspec +245 -0
  60. data/package.json +43 -0
  61. data/project/.gitignore +45 -0
  62. data/project/Gemfile +33 -0
  63. data/project/Gemfile.lock +437 -0
  64. data/project/Procfile +2 -0
  65. data/project/README.md +117 -0
  66. data/project/Rakefile +14 -0
  67. data/project/app/controllers/application_controller.rb +12 -0
  68. data/project/app/controllers/conversions_controller.rb +24 -0
  69. data/project/app/controllers/examples_controller.rb +2 -0
  70. data/project/app/controllers/home_controller.rb +7 -0
  71. data/project/app/decorators/.keep +0 -0
  72. data/project/app/helpers/application_helper.rb +24 -0
  73. data/project/app/mailers/.keep +0 -0
  74. data/project/app/models/conversion.rb +4 -0
  75. data/project/app/views/examples/index.html.erb +1 -0
  76. data/project/app/views/examples/mustache/template.mustache +1 -0
  77. data/project/app/views/examples/mustache.html.erb +18 -0
  78. data/project/app/views/home/conversion.html.erb +12 -0
  79. data/project/app/views/home/index.html.erb +28 -0
  80. data/project/app/views/layouts/_header.html.erb +16 -0
  81. data/project/app/views/layouts/_includes.html.erb +7 -0
  82. data/project/app/views/layouts/application.html.erb +17 -0
  83. data/project/app/views/layouts/modal.html.erb +14 -0
  84. data/project/assets/images/.keep +0 -0
  85. data/project/assets/images/favicon.ico +0 -0
  86. data/project/assets/javascripts/controllers/home.coffee +15 -0
  87. data/project/assets/javascripts/pack.js +9 -0
  88. data/project/assets/stylesheets/config/variables.scss +876 -0
  89. data/project/assets/stylesheets/layout/basic.scss +6 -0
  90. data/project/assets/stylesheets/layout/carousel.scss +127 -0
  91. data/project/assets/stylesheets/layout/cover.scss +129 -0
  92. data/project/assets/stylesheets/lib/spacing.scss +55 -0
  93. data/project/assets/stylesheets/skin/style.scss +16 -0
  94. data/project/assets/stylesheets/style.scss +8 -0
  95. data/project/bin/bundle +3 -0
  96. data/project/bin/rails +9 -0
  97. data/project/bin/rake +9 -0
  98. data/project/bin/setup +32 -0
  99. data/project/bin/spring +15 -0
  100. data/project/config/application.rb +32 -0
  101. data/project/config/boot.rb +3 -0
  102. data/project/config/database.yml +19 -0
  103. data/project/config/environment.rb +5 -0
  104. data/project/config/environments/development.rb +67 -0
  105. data/project/config/environments/production.rb +93 -0
  106. data/project/config/environments/test.rb +42 -0
  107. data/project/config/initializers/assets.rb +11 -0
  108. data/project/config/initializers/backtrace_silencers.rb +7 -0
  109. data/project/config/initializers/cookies_serializer.rb +3 -0
  110. data/project/config/initializers/filter_parameter_logging.rb +4 -0
  111. data/project/config/initializers/inflections.rb +16 -0
  112. data/project/config/initializers/mime_types.rb +4 -0
  113. data/project/config/initializers/mustache.rb +7 -0
  114. data/project/config/initializers/rails_admin.rb +43 -0
  115. data/project/config/initializers/session_store.rb +3 -0
  116. data/project/config/initializers/simple_form.rb +177 -0
  117. data/project/config/initializers/wrap_parameters.rb +14 -0
  118. data/project/config/locales/en.yml +23 -0
  119. data/project/config/locales/simple_form.en.yml +31 -0
  120. data/project/config/routes.rb +13 -0
  121. data/project/config/secrets.yml +8 -0
  122. data/project/config/sitemap.rb +28 -0
  123. data/project/config.ru +4 -0
  124. data/project/db/migrate/20160728235100_create_conversions.rb +9 -0
  125. data/project/db/schema.rb +25 -0
  126. data/project/db/seeds.rb +7 -0
  127. data/project/lib/assets/.keep +0 -0
  128. data/project/lib/tasks/heroku.rake +70 -0
  129. data/project/log/.keep +0 -0
  130. data/project/log/development.log +48216 -0
  131. data/project/log/production.log +0 -0
  132. data/project/package.json +44 -0
  133. data/project/public/404.html +67 -0
  134. data/project/public/422.html +67 -0
  135. data/project/public/500.html +66 -0
  136. data/project/public/assets/javascripts/448c34a56d699c29117adc64c43affeb.woff2 +0 -0
  137. data/project/public/assets/javascripts/89889688147bd7575d6327160d64e760.svg +288 -0
  138. data/project/public/assets/javascripts/e18bbf611f2a2e43afc071aa2f4e1512.ttf +0 -0
  139. data/project/public/assets/javascripts/f4769f9bdb7466be65088239c12046d1.eot +0 -0
  140. data/project/public/assets/javascripts/fa2772327f55d8198301fdb8bcfc8158.woff +0 -0
  141. data/project/public/assets/javascripts/pack.js +31367 -0
  142. data/project/public/assets/javascripts/pack.js.map +1 -0
  143. data/project/public/assets/pack.js +17220 -0
  144. data/project/public/assets/style.css +7477 -0
  145. data/project/vendor/assets/javascripts/.keep +0 -0
  146. data/project/vendor/assets/stylesheets/.keep +0 -0
  147. data/project/webpack.config.js +67 -0
  148. data/test/helper.rb +34 -0
  149. data/test/test_minimum_viable_product.rb +7 -0
  150. 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,2 @@
1
+ Rails.application.config.assets.paths << Rails.root.join('node_modules')
2
+ Rails.application.config.assets.paths << MinimumViableProduct::Engine.root.join('app')
@@ -0,0 +1,3 @@
1
+ if ENV['HOST_DOMAIN']
2
+ Rails.application.config.middleware.use Rack::CanonicalHost, ENV['HOST_DOMAIN']
3
+ end
@@ -0,0 +1,7 @@
1
+ Cloudinary.config do |config|
2
+ config.cloud_name = ENV['CLOUDINARY_NAME']
3
+ config.api_key = ENV['CLOUDINARY_KEY']
4
+ config.api_secret = ENV['CLOUDINARY_SECRET']
5
+ config.cdn_subdomain = true
6
+ config.secure = true
7
+ end
@@ -0,0 +1,9 @@
1
+ Geocoder.configure(
2
+ :lookup => :esri,
3
+ # :ip_lookup => :maxmind,
4
+ :logger => Logger.new(STDOUT, Logger::FATAL)
5
+
6
+ # calculation options
7
+ # :units => :mi, # :km for kilometers or :mi for miles
8
+ # :distances => :linear # :spherical or :linear
9
+ )
@@ -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
@@ -0,0 +1,5 @@
1
+ class NilClass
2
+ def to_b
3
+ return false
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class String
2
+ def to_b
3
+ return true if self == true || self =~ (/(true|t|yes|y|1)$/i)
4
+ return false if self == false || self.blank? || self =~ (/(false|f|no|n|0)$/i)
5
+ raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
6
+ end
7
+ end
data/lib/mvpkit.rb ADDED
@@ -0,0 +1,6 @@
1
+ module MVP
2
+ end
3
+
4
+ MinimumViableProduct = MVP
5
+
6
+ require "mvp/engine"
@@ -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
+ }