generapp 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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>