generapp 0.2.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 (52) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +18 -0
  4. data/.rspec +2 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +13 -0
  7. data/.yardopts +9 -0
  8. data/CHANGELOG.md +3 -0
  9. data/CODE_OF_CONDUCT.md +13 -0
  10. data/Gemfile +4 -0
  11. data/MIT-LICENSE +21 -0
  12. data/README.md +76 -0
  13. data/Rakefile +13 -0
  14. data/bin/generapp +14 -0
  15. data/bin/setup +7 -0
  16. data/generapp.gemspec +33 -0
  17. data/lib/generapp/actions/configuration.rb +34 -0
  18. data/lib/generapp/actions/database.rb +15 -0
  19. data/lib/generapp/actions/develop.rb +72 -0
  20. data/lib/generapp/actions/files.rb +14 -0
  21. data/lib/generapp/actions/production.rb +17 -0
  22. data/lib/generapp/actions/test.rb +44 -0
  23. data/lib/generapp/actions/views.rb +30 -0
  24. data/lib/generapp/app_builder.rb +54 -0
  25. data/lib/generapp/generators/app_generator.rb +137 -0
  26. data/lib/generapp/version.rb +5 -0
  27. data/lib/generapp.rb +12 -0
  28. data/templates/Gemfile.erb +49 -0
  29. data/templates/Procfile +1 -0
  30. data/templates/Procfile.dev +4 -0
  31. data/templates/README.md.erb +20 -0
  32. data/templates/application.scss +1 -0
  33. data/templates/circle.yml +7 -0
  34. data/templates/config/application.yml +17 -0
  35. data/templates/config/newrelic.yml.erb +30 -0
  36. data/templates/config/postgresql_database.yml.erb +20 -0
  37. data/templates/config/puma.rb +15 -0
  38. data/templates/generapp_gitignore +44 -0
  39. data/templates/public/humans.txt +2 -0
  40. data/templates/public/manifest.json +41 -0
  41. data/templates/simplecov +4 -0
  42. data/templates/spec/database_cleaner.rb +16 -0
  43. data/templates/spec/devise.rb +3 -0
  44. data/templates/spec/rails_helper.rb +55 -0
  45. data/templates/spec/shoulda_matchers_config.rb +6 -0
  46. data/templates/tasks/auto_annotate_models.rake +37 -0
  47. data/templates/tasks/bundler_audit.rake +12 -0
  48. data/templates/views/_flashes.html.erb +5 -0
  49. data/templates/views/_head.html.erb.erb +30 -0
  50. data/templates/views/_javascript.html.erb +3 -0
  51. data/templates/views/generapp_layout.html.erb.erb +14 -0
  52. metadata +186 -0
@@ -0,0 +1,137 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/rails/app/app_generator'
3
+
4
+ module Generapp
5
+ module Generators
6
+ class AppGenerator < ::Rails::Generators::AppGenerator
7
+ class_option :database, type: :string, aliases: '-d', default: 'postgresql',
8
+ desc: "Configure for selected database (options: #{DATABASES.join("/")})"
9
+
10
+ class_option :skip_test_unit, type: :boolean, aliases: '-T', default: true,
11
+ desc: 'Skip Test::Unit files'
12
+
13
+ class_option :skip_turbolinks, type: :boolean, default: true,
14
+ desc: 'Skip turbolinks gem'
15
+
16
+ class_option :skip_bundle, type: :boolean, aliases: '-B', default: true,
17
+ desc: "Don't run bundle install"
18
+
19
+ def finish_template
20
+ invoke :generapp_customization
21
+ super
22
+ end
23
+
24
+ def generapp_customization
25
+ invoke :setup_gems
26
+ invoke :setup_development_environment
27
+ invoke :setup_test_environment
28
+ invoke :setup_production_environment
29
+ invoke :create_generapp_views
30
+ invoke :configure_app
31
+ invoke :setup_stylesheets
32
+ invoke :setup_database
33
+ invoke :setup_git
34
+ invoke :setup_bundler_audit
35
+ invoke :setup_spring
36
+ invoke :outro
37
+ end
38
+
39
+ def setup_gems
40
+ build :set_ruby_version
41
+ bundle_command 'install'
42
+ end
43
+
44
+ def setup_development_environment
45
+ say 'Setting up the development environment'
46
+ build :raise_on_delivery_errors
47
+ build :add_bullet_gem_configuration
48
+ build :configure_dalli
49
+ build :configure_generators
50
+ build :generate_annotate
51
+ build :add_secrets
52
+ end
53
+
54
+ def setup_test_environment
55
+ say 'Setting up the test environment'
56
+ build :generate_rspec
57
+ build :configure_rspec
58
+ build :enable_database_cleaner
59
+ build :enable_devise_tests
60
+ build :provide_shoulda_matchers_config
61
+ build :spec_folders
62
+ build :configure_coverage
63
+ build :configure_ci
64
+ end
65
+
66
+ def setup_production_environment
67
+ say 'Setting up the production environment'
68
+ build :configure_newrelic
69
+ build :configure_rack_timeout
70
+ end
71
+
72
+ def create_generapp_views
73
+ say 'Creating views'
74
+ build :create_shared_directory
75
+ build :create_shared_flashes
76
+ build :create_shared_javascripts
77
+ build :create_application_layout
78
+ end
79
+
80
+ def configure_app
81
+ say 'Configuring app'
82
+ build :setup_default_rake_task
83
+ build :configure_puma
84
+ build :set_up_foreman
85
+ build :generate_devise
86
+ end
87
+
88
+ def setup_stylesheets
89
+ say 'Setting up stylesheets'
90
+ build :setup_stylesheets
91
+ end
92
+
93
+ def setup_database
94
+ say 'Setting up database'
95
+ if 'postgresql' == options[:database]
96
+ build :use_postgres_config_template
97
+ end
98
+ build :create_database
99
+ end
100
+
101
+ def setup_git
102
+ return if options[:skip_git]
103
+ say 'Initializing git'
104
+ invoke :init_git
105
+ end
106
+
107
+ def setup_bundler_audit
108
+ say 'Setting up bundler-audit'
109
+ build :setup_bundler_audit
110
+ end
111
+
112
+ def setup_spring
113
+ say 'Springifying executables'
114
+ build :setup_spring
115
+ end
116
+
117
+ def init_git
118
+ build :init_git
119
+ end
120
+
121
+ def outro
122
+ say "Done generating #{app_name}"
123
+ say "Remember to run 'bundle exec honeybadger install [YOUR API KEY HERE]'"
124
+ end
125
+
126
+ protected
127
+
128
+ def get_builder_class
129
+ Generapp::AppBuilder
130
+ end
131
+
132
+ def using_active_record?
133
+ !options[:skip_active_record]
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,5 @@
1
+ module Generapp
2
+ RAILS_VERSION = '~> 4.2.0'.freeze
3
+ RUBY_VERSION = IO.read("#{File.dirname(__FILE__)}/../../.ruby-version").strip
4
+ VERSION = '0.2.0'.freeze
5
+ end
data/lib/generapp.rb ADDED
@@ -0,0 +1,12 @@
1
+ module Generapp
2
+ def self.root
3
+ File.dirname __dir__
4
+ end
5
+
6
+ def self.templates
7
+ File.join root, 'templates'
8
+ end
9
+ end
10
+ require 'generapp/version'
11
+ require 'generapp/app_builder'
12
+ require 'generapp/generators/app_generator'
@@ -0,0 +1,49 @@
1
+ source 'https://rubygems.org'
2
+
3
+ ruby '<%= Generapp::RUBY_VERSION %>'
4
+
5
+ gem 'devise'
6
+ gem 'dalli' # caching
7
+ gem 'honeybadger', '~> 2.0'
8
+ gem 'jquery-rails'
9
+ gem 'newrelic_rpm'
10
+ gem 'pg'
11
+ gem 'puma' # Use Puma as the app server
12
+ gem 'rails', '<%= Generapp::RAILS_VERSION %>'
13
+ gem 'sass-rails', '~>5.0'
14
+ gem 'uglifier'
15
+
16
+ group :development do
17
+ gem 'annotate'
18
+ gem 'better_errors'
19
+ gem 'binding_of_caller'
20
+ gem 'bullet'
21
+ gem 'lol_dba', require: false
22
+ gem 'quiet_assets'
23
+ gem 'parallel_tests'
24
+ gem 'rails-erd'
25
+ gem 'spring'
26
+ end
27
+
28
+ group :development, :test do
29
+ gem 'bundler-audit', require: false
30
+ gem 'factory_girl_rails'
31
+ gem 'figaro' # Secrets
32
+ gem 'foreman'
33
+ gem 'pry-rails'
34
+ gem 'pry-remote'
35
+ gem 'rspec-rails'
36
+ end
37
+
38
+ group :test do
39
+ gem 'database_cleaner'
40
+ gem 'faker'
41
+ gem 'shoulda-matchers'
42
+ gem 'simplecov', require: false
43
+ gem 'timecop'
44
+ end
45
+
46
+ group :production do
47
+ gem 'rack-timeout'
48
+ gem 'rails_12factor'
49
+ end
@@ -0,0 +1 @@
1
+ web: bundle exec puma -C config/puma.rb
@@ -0,0 +1,4 @@
1
+ # recursively load foreman with the production services.
2
+ redis: redis-server
3
+ memcached: memcached
4
+ foreman: foreman start -f Procfile
@@ -0,0 +1,20 @@
1
+ # <%= app_name.humanize %>
2
+
3
+ ## Getting Started
4
+
5
+ ### Requirements
6
+
7
+ ### Installing <%= app_name.humanize %>
8
+
9
+ ## Starting the app
10
+
11
+ ## Staging Environment
12
+
13
+ ## Production Environment
14
+
15
+ ## Troubleshooting
16
+
17
+ ## How to Contribute
18
+
19
+ ## License
20
+ Copyright <%= Time.now.year %>
@@ -0,0 +1 @@
1
+ @charset "UTF-8";
@@ -0,0 +1,7 @@
1
+ dependencies:
2
+ override:
3
+ - bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
4
+ - cp config/application.yml.example config/application.yml
5
+ test:
6
+ override:
7
+ - bundle exec rspec
@@ -0,0 +1,17 @@
1
+ defaults: &defaults
2
+ DB_POOL: '12' # Max number of active DB connection
3
+ MAX_THREADS: '3' # Puma max number of threads
4
+ REAPING_FREQUENCY: '5' # Enable database reaping connections
5
+ WEB_CONCURRENCY: '2' # Puma processes
6
+
7
+ development:
8
+ <<: *defaults
9
+
10
+ test:
11
+ <<: *defaults
12
+
13
+ staging:
14
+ <<: *defaults
15
+
16
+ production:
17
+ <<: *defaults
@@ -0,0 +1,30 @@
1
+ common: &default_settings
2
+ app_name: "<%= app_name %>"
3
+ audit_log:
4
+ enabled: false
5
+ browser_monitoring:
6
+ auto_instrument: true
7
+ capture_params: false
8
+ developer_mode: false
9
+ error_collector:
10
+ capture_source: true
11
+ enabled: true
12
+ ignore_errors: "ActionController::RoutingError,Sinatra::NotFound"
13
+ license_key: "<%%= ENV["NEW_RELIC_LICENSE_KEY"] %>"
14
+ log_level: info
15
+ monitor_mode: true
16
+ transaction_tracer:
17
+ enabled: true
18
+ record_sql: obfuscated
19
+ stack_trace_threshold: 0.500
20
+ transaction_threshold: apdex_f
21
+ development:
22
+ <<: *default_settings
23
+ monitor_mode: false
24
+ developer_mode: true
25
+ test:
26
+ <<: *default_settings
27
+ monitor_mode: false
28
+ production:
29
+ <<: *default_settings
30
+ monitor_mode: true
@@ -0,0 +1,20 @@
1
+ defaults: &defaults
2
+ adapter: postgresql
3
+ template: template0
4
+ host: localhost
5
+
6
+ development:
7
+ <<: *defaults
8
+ database: <%= app_name %>_development
9
+
10
+ test:
11
+ <<: *defaults
12
+ min_messages: warning #magic sauce
13
+ database: <%= app_name %>_test
14
+
15
+ production: &deploy
16
+ url: <%%= ENV['DATABASE_URL'] %>
17
+ pool: <%%= ENV['DB_POOL'] || ENV['MAX_THREADS'] || 3 %>
18
+ reaping_frequency: <%%= ENV['REAPING_FREQUENCY'] || nil %>
19
+
20
+ staging: *deploy
@@ -0,0 +1,15 @@
1
+ workers Integer(ENV['WEB_CONCURRENCY'] || 2)
2
+ threads_count = Integer(ENV['MAX_THREADS'] || 3)
3
+ threads threads_count, threads_count
4
+
5
+ preload_app!
6
+
7
+ rackup DefaultRackup
8
+ port ENV['PORT'] || 3000
9
+ environment ENV['RACK_ENV'] || 'development'
10
+
11
+ on_worker_boot do
12
+ # Worker specific setup for Rails 4.1+
13
+ # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
14
+ ActiveRecord::Base.establish_connection
15
+ end
@@ -0,0 +1,44 @@
1
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile '~/.gitignore_global'
6
+
7
+ # Ignore all logfiles and tempfiles.
8
+ logfile
9
+ logs
10
+ parsed_logs
11
+ log/*
12
+ tmp/*
13
+ public/assets
14
+ public/uploads/*
15
+ coverage/*
16
+ ssl
17
+ .bundle/*
18
+ # Ignore Doc
19
+ doc/*
20
+
21
+ # General swap/backup files
22
+ *.so
23
+ *.log
24
+ *.out
25
+ *~
26
+ *.swp
27
+ *.DS_Store
28
+ *.lock
29
+ backup*.dump
30
+ *.dump
31
+ *.orig
32
+
33
+ # Idea
34
+ .idea
35
+ .idea/**/*
36
+
37
+ #rbenv
38
+ .rbenv-gemsets
39
+
40
+ # Ignore application configuration
41
+ /config/application.yml
42
+
43
+ #Ignore Vagrant
44
+ .vagrant/
@@ -0,0 +1,2 @@
1
+ # humanstxt.org/
2
+ # The humans responsible & technology colophon
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "App",
3
+ "icons": [
4
+ {
5
+ "src": "\/android-icon-36x36.png",
6
+ "sizes": "36x36",
7
+ "type": "image\/png",
8
+ "density": "0.75"
9
+ },
10
+ {
11
+ "src": "\/android-icon-48x48.png",
12
+ "sizes": "48x48",
13
+ "type": "image\/png",
14
+ "density": "1.0"
15
+ },
16
+ {
17
+ "src": "\/android-icon-72x72.png",
18
+ "sizes": "72x72",
19
+ "type": "image\/png",
20
+ "density": "1.5"
21
+ },
22
+ {
23
+ "src": "\/android-icon-96x96.png",
24
+ "sizes": "96x96",
25
+ "type": "image\/png",
26
+ "density": "2.0"
27
+ },
28
+ {
29
+ "src": "\/android-icon-144x144.png",
30
+ "sizes": "144x144",
31
+ "type": "image\/png",
32
+ "density": "3.0"
33
+ },
34
+ {
35
+ "src": "\/android-icon-192x192.png",
36
+ "sizes": "192x192",
37
+ "type": "image\/png",
38
+ "density": "4.0"
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,4 @@
1
+ SimpleCov.start 'rails' do
2
+ add_filter 'spec'
3
+ add_filter '.gems'
4
+ end
@@ -0,0 +1,16 @@
1
+ RSpec.configure do |config|
2
+ config.before(:suite) do
3
+ DatabaseCleaner.strategy = :transaction
4
+ DatabaseCleaner.clean_with :truncation
5
+ end
6
+
7
+ config.around(:each) do |example|
8
+ DatabaseCleaner.cleaning do
9
+ example.run
10
+ end
11
+ end
12
+
13
+ config.after(:each) do
14
+ DatabaseCleaner.clean
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.include Devise::TestHelpers, type: :controller
3
+ end
@@ -0,0 +1,55 @@
1
+ require 'simplecov'
2
+
3
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
4
+ ENV['RAILS_ENV'] ||= 'test'
5
+ require File.expand_path('../../config/environment', __FILE__)
6
+ # Prevent database truncation if the environment is production
7
+ abort('The Rails environment is running in production mode!') if Rails.env.production?
8
+ require 'spec_helper'
9
+ require 'rspec/rails'
10
+ # Add additional requires below this line. Rails is not loaded until this point!
11
+
12
+ # Requires supporting ruby files with custom matchers and macros, etc, in
13
+ # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
14
+ # run as spec files by default. This means that files in spec/support that end
15
+ # in _spec.rb will both be required and run as specs, causing the specs to be
16
+ # run twice. It is recommended that you do not name files matching this glob to
17
+ # end with _spec.rb. You can configure this pattern with the --pattern
18
+ # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
19
+ #
20
+ # The following line is provided for convenience purposes. It has the downside
21
+ # of increasing the boot-up time by auto-requiring all files in the support
22
+ # directory. Alternatively, in the individual `*_spec.rb` files, manually
23
+ # require only the support files necessary.
24
+ #
25
+ Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
26
+
27
+ # Checks for pending migration and applies them before tests are run.
28
+ # If you are not using ActiveRecord, you can remove this line.
29
+ ActiveRecord::Migration.maintain_test_schema!
30
+
31
+ RSpec.configure do |config|
32
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
33
+ # examples within a transaction, remove the following line or assign false
34
+ # instead of true.
35
+ config.use_transactional_fixtures = true
36
+
37
+ # RSpec Rails can automatically mix in different behaviours to your tests
38
+ # based on their file location, for example enabling you to call `get` and
39
+ # `post` in specs under `spec/controllers`.
40
+ #
41
+ # You can disable this behaviour by removing the line below, and instead
42
+ # explicitly tag your specs with their type, e.g.:
43
+ #
44
+ # RSpec.describe UsersController, :type => :controller do
45
+ # # ...
46
+ # end #
47
+ # The different available types are documented in the features, such as in
48
+ # https://relishapp.com/rspec/rspec-rails/docs
49
+ config.infer_spec_type_from_file_location!
50
+
51
+ # Filter lines from Rails gems in backtraces.
52
+ config.filter_rails_from_backtrace!
53
+ # arbitrary gems may also be filtered via:
54
+ # config.filter_gems_from_backtrace("gem name")
55
+ end
@@ -0,0 +1,6 @@
1
+ Shoulda::Matchers.configure do |config|
2
+ config.integrate do |with|
3
+ with.test_framework :rspec
4
+ with.library :rails
5
+ end
6
+ end
@@ -0,0 +1,37 @@
1
+ # NOTE: only doing this in development as some production environments (Heroku)
2
+ # NOTE: are sensitive to local FS writes, and besides -- it's just not proper
3
+ # NOTE: to have a dev-mode tool do its thing in production.
4
+ if Rails.env.development?
5
+ task :set_annotation_options do
6
+ # You can override any of these by setting an environment variable of the
7
+ # same name.
8
+ Annotate.set_defaults({
9
+ 'position_in_routes' => 'after',
10
+ 'position_in_class' => 'before',
11
+ 'position_in_test' => 'before',
12
+ 'position_in_fixture' => 'before',
13
+ 'position_in_factory' => 'before',
14
+ 'position_in_serializer' => 'before',
15
+ 'show_foreign_keys' => 'true',
16
+ 'show_indexes' => 'true',
17
+ 'simple_indexes' => 'false',
18
+ 'model_dir' => 'app/models',
19
+ 'include_version' => 'false',
20
+ 'require' => '',
21
+ 'exclude_tests' => 'true',
22
+ 'exclude_fixtures' => 'true',
23
+ 'exclude_factories' => 'false',
24
+ 'exclude_serializers' => 'true',
25
+ 'ignore_model_sub_dir' => 'false',
26
+ 'skip_on_db_migrate' => 'false',
27
+ 'format_bare' => 'true',
28
+ 'format_rdoc' => 'false',
29
+ 'format_markdown' => 'false',
30
+ 'sort' => 'false',
31
+ 'force' => 'false',
32
+ 'trace' => 'false',
33
+ })
34
+ end
35
+
36
+ Annotate.load_tasks
37
+ end
@@ -0,0 +1,12 @@
1
+ if Rails.env.development? || Rails.env.test?
2
+ require "bundler/audit/cli"
3
+
4
+ namespace :bundler do
5
+ desc "Updates the ruby-advisory-db and runs audit"
6
+ task :audit do
7
+ %w(update check).each do |command|
8
+ Bundler::Audit::CLI.start [command]
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,5 @@
1
+ <% flash.each do |type, message| %>
2
+ <div class="<%= type %>">
3
+ <%= message %>
4
+ </div>
5
+ <% end %>
@@ -0,0 +1,30 @@
1
+ <title><%%= content_for?(:page_title) ? yield(:page_title) : <%= app_name.humanize %> %></title>
2
+
3
+ <%%= favicon_link_tag 'apple-icon-57x57.png', rel: 'apple-touch-icon', sizes: '57x57' %>
4
+ <%%= favicon_link_tag 'apple-icon-60x60.png', rel: 'apple-touch-icon', sizes: '60x60' %>
5
+ <%%= favicon_link_tag 'apple-icon-72x72.png', rel: 'apple-touch-icon', sizes: '72x72' %>
6
+ <%%= favicon_link_tag 'apple-icon-76x76.png', rel: 'apple-touch-icon', sizes: '76x76' %>
7
+ <%%= favicon_link_tag 'apple-icon-114x114.png', rel: 'apple-touch-icon', sizes: '114x114' %>
8
+ <%%= favicon_link_tag 'apple-icon-120x120.png', rel: 'apple-touch-icon', sizes: '120x120' %>
9
+ <%%= favicon_link_tag 'apple-icon-144x144.png', rel: 'apple-touch-icon', sizes: '144x144' %>
10
+ <%%= favicon_link_tag 'apple-icon-152x152.png', rel: 'apple-touch-icon', sizes: '152x152' %>
11
+ <%%= favicon_link_tag 'apple-icon-180x180.png', rel: 'apple-touch-icon', sizes: '180x180' %>
12
+ <%%= favicon_link_tag 'android-icon-192x192.png', rel: 'icon', type: 'image/png', sizes: '57x57' %>
13
+ <%%= favicon_link_tag 'favicon-32x32.png', rel: 'icon', type: 'image/png', sizes: '32x32' %>
14
+ <%%= favicon_link_tag 'favicon-96x96.png', rel: 'icon', type: 'image/png', sizes: '96x96' %>
15
+ <%%= favicon_link_tag 'favicon-16x16.png', rel: 'icon', type: 'image/png', sizes: '16x16' %>
16
+ <link rel="manifest" href="/manifest.json">
17
+
18
+ <meta name="msapplication-TileColor" content="#fff">
19
+ <meta name="msapplication-TileImage" content="<%%= image_path 'ms-icon-144x144.png' %>">
20
+ <meta name="theme-color" content="#fff">
21
+
22
+ <meta name="robots" content="index,follow">
23
+ <meta name="description" content="Saasler is the easiest way to create an “integrations directory” for your app.">
24
+ <meta name="keywords" content="integrations,lists,applications">
25
+ <link rel="author" href="humans.txt" />
26
+
27
+ <%%= stylesheet_link_tag 'application' %>
28
+ <%%= csrf_meta_tags %>
29
+ <meta name="viewport" content="width=device-width, initial-scale=1">
30
+ <link href='https://fonts.googleapis.com/css?family=Roboto:400,700,300' rel='stylesheet' type='text/css'>
@@ -0,0 +1,3 @@
1
+ <%= javascript_include_tag :application %>
2
+
3
+ <%= yield :javascript %>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <%%= render partial: 'shared/head' %>
5
+ </head>
6
+ <body>
7
+ <%%= render partial: 'shared/flashes' -%>
8
+ <main>
9
+ <%%= yield %>
10
+ </main>
11
+
12
+ <%%= render partial: 'shared/javascripts'%>
13
+ </body>
14
+ </html>