mecha 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2bb22e257e60aedab8864b3826353fd0640dc535
4
- data.tar.gz: b9b52ac3fc8fe598eaaea5971b8a27b0dc37c9a2
3
+ metadata.gz: a1b4e173bd19a46c5c102c5a9a2e39eef3f1c474
4
+ data.tar.gz: ff7fd9cb4ec89a2fa9ebfaa037ec9300c4625d58
5
5
  SHA512:
6
- metadata.gz: 30dc8165aca6b164e1880348c2b9df20df6c2d4f8a00e50bb8ec23f475c47f8f3f21787b632653d810ac6e0b67da548e067f3e7c0a7cd8c61313dac139306b5b
7
- data.tar.gz: 67ae29ee268f975f9f56153113c9e9e52baf9830290ab848b1883f73c1dd33be7e2f416f9485d8bb72d70c17508736d8263ce6cd3a0489e3e196c1b5d2d10975
6
+ metadata.gz: 8fd2135d7dff7350b157a5572a762787ba1cc9f82f77f16d8d75c80f7c00be693b1c5ca37fa092e7841ce7c8f28b147c2b1c2c69ef3d6fe1dd8696dae644ba4d
7
+ data.tar.gz: 419210038f9549d19bdbcacd0b355811e564443ca41d9c2b27bfb2f2c09065d761b5bda41c64f2cf5b9a5c8489662a71966729cffff92d2882d16d3f10c39826
data/README.md CHANGED
@@ -26,7 +26,13 @@ This will create a Rails app with name `<projectname>` and add all our defaults.
26
26
 
27
27
  ## Development
28
28
 
29
- TODO:
29
+ Run `rake test` or simply just `rake` to run tests.
30
+
31
+ To install Mecha in your local environment run:
32
+
33
+ ```bash
34
+ rake install
35
+ ```
30
36
 
31
37
  ## Contributing
32
38
 
@@ -34,7 +40,6 @@ Bug reports and pull requests are welcome on [GitHub](https://github.com/magrath
34
40
  intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the
35
41
  [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
42
 
37
-
38
43
  ## License
39
44
 
40
45
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/bin/mecha CHANGED
@@ -2,7 +2,17 @@
2
2
 
3
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
4
 
5
+ require 'slop'
5
6
  require 'mecha'
6
7
 
8
+ Mecha.opts = Slop.parse do |o|
9
+ o.bool '-d', '--devise', 'Install and config Devise'
10
+ o.bool '-bp', '--bitbucket-pipelines', 'Config Bitbucket Pipelines'
11
+ o.on '--version', 'print the version' do
12
+ puts Mecha::VERSION
13
+ exit
14
+ end
15
+ end
16
+
7
17
  Mecha.config_templates_path
8
18
  Mecha::AppGenerator.start
@@ -1,21 +1,39 @@
1
1
  module Mecha
2
2
  class AppBuilder < Rails::AppBuilder
3
3
  def config_application
4
- inject_into_class('config/application.rb', 'Application') do
5
- <<-DOC
6
- config.assets.initialize_on_precompile = false
7
- config.autoload_paths += %W(\#{config.root}/lib \#{config.root}/app/uploaders \#{config.root}/services)
8
- config.i18n.default_locale = :'pt-BR'
9
- config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
10
- config.generators do |g|
11
- g.view_specs false
12
- g.routing_specs false
13
- g.stylesheets false
14
- g.javascripts false
15
- g.helper false
4
+ inject_into_class('config/application.rb', 'Application') { inject_to_application_rb }
16
5
  end
17
- DOC
18
- end
6
+
7
+ def config_bitbucket_pipelines
8
+ return unless Mecha.opts.bitbucket_pipelines?
9
+ say('Config Bitbucket Pipelines', :green)
10
+ template('bitbucket-pipelines.yml.erb', 'bitbucket-pipelines.yml')
11
+ end
12
+
13
+ def config_devise
14
+ return unless Mecha.opts.devise?
15
+ say('Installing devise from generator', :green)
16
+ system('rails generate devise:install')
17
+ inject_into_file(
18
+ 'config/environments/development.rb',
19
+ "\n\n config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }",
20
+ before: "\nend"
21
+ )
22
+ system('rails generate devise User')
23
+ system('rails generate devise:views')
24
+ inject_into_file(
25
+ 'app/controllers/application_controller.rb',
26
+ "\n before_action :authenticate_user!",
27
+ before: "\nend"
28
+ )
29
+ end
30
+
31
+ def config_guardfile
32
+ copy_file('Guardfile', 'Guardfile')
33
+ end
34
+
35
+ def config_rubocop
36
+ copy_file('rubocop.yml', '.rubocop.yml')
19
37
  end
20
38
 
21
39
  def config_test
@@ -25,8 +43,8 @@ module Mecha
25
43
  end
26
44
 
27
45
  def database_yml
28
- template "config/databases/#{options[:database]}.yml", 'config/database.example.yml'
29
- template "config/databases/#{options[:database]}.yml", 'config/database.yml'
46
+ template "config/databases/#{options[:database]}.yml.erb", 'config/database.example.yml'
47
+ template "config/databases/#{options[:database]}.yml.erb", 'config/database.yml'
30
48
  end
31
49
 
32
50
  def gemfile
@@ -38,27 +56,42 @@ module Mecha
38
56
  @generator.append_file('.gitignore', append_to_gitignore)
39
57
  end
40
58
 
41
- def guardfile
42
- copy_file('Guardfile', 'Guardfile')
43
- end
44
-
45
59
  def readme
46
60
  template('README.md.erb', 'README.md')
47
61
  end
48
62
 
49
- def rubocop
50
- copy_file('rubocop.yml', '.rubocop.yml')
63
+ def config_simplecov
64
+ copy_file('simplecov', '.simplecov')
51
65
  end
52
66
 
53
67
  def leftovers
54
- guardfile
55
- rubocop
56
68
  config_application
69
+ config_bitbucket_pipelines
70
+ config_devise
71
+ config_simplecov
72
+ config_guardfile
73
+ config_rubocop
57
74
  config_test
58
75
  end
59
76
 
60
77
  private
61
78
 
79
+ def inject_to_application_rb
80
+ <<-DOC
81
+ config.assets.initialize_on_precompile = false
82
+ config.autoload_paths += %W(\#{config.root}/lib \#{config.root}/app/uploaders \#{config.root}/services)
83
+ config.i18n.default_locale = :'pt-BR'
84
+ config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
85
+ config.generators do |g|
86
+ g.view_specs false
87
+ g.routing_specs false
88
+ g.stylesheets false
89
+ g.javascripts false
90
+ g.helper false
91
+ end
92
+ DOC
93
+ end
94
+
62
95
  def append_to_gitignore
63
96
  <<-DOC.strip_heredoc
64
97
  .DS_Store
@@ -0,0 +1,16 @@
1
+ class String
2
+ # Underscore a string, replacing dashes and spaces using underscores.
3
+ #
4
+ # @example Convert a camel case String to snake case
5
+ # 'Snake - Case'.snakecase #=> 'snake_case'
6
+ #
7
+ # @return [String] the object converted to underscore format.
8
+ def underscore
9
+ tr('-', '_')
10
+ .gsub(/\s/, '_')
11
+ .gsub(/__+/, '_')
12
+ .downcase
13
+ end
14
+
15
+ alias snakecase underscore
16
+ end
@@ -8,14 +8,13 @@ end
8
8
 
9
9
  gem 'rails', '<%= Mecha::RAILS_VERSION %>'
10
10
 
11
- gem 'pg'
12
- gem 'puma'
11
+ gem 'pg', '~> 0.18.4'
12
+ gem 'puma', '~> 3.8.0'
13
13
 
14
- gem 'devise', '~> 4.2'
14
+ <%= "gem 'devise', '~> 4.2'\n" unless Mecha.opts.skip_devise? -%>
15
15
 
16
- gem 'jquery-rails'
17
- gem 'turbolinks'
18
- gem 'uglifier', '>= 1.3.0'
16
+ gem 'jquery-rails', '~> 4.3.1'
17
+ gem 'uglifier', '~> 3.1.12'
19
18
 
20
19
  group :development, :test do
21
20
  gem 'byebug', platform: :mri
@@ -31,11 +30,11 @@ group :development do
31
30
  gem 'guard-minitest'
32
31
  gem 'guard-rails', require: false
33
32
  gem 'guard-rubocop'
34
- gem 'listen', '~> 3.0.5'
33
+ gem 'listen'
35
34
  gem 'rubocop', require: false
36
35
  gem 'spring'
37
36
  gem 'spring-watcher-listen'
38
- gem 'web-console', '>= 3.3.0'
37
+ gem 'web-console'
39
38
  end
40
39
 
41
40
  group :test do
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## Dependencies
10
10
 
11
- - Ruby 2.3.3
11
+ - Ruby <%= Mecha::RUBY_VERSION %>
12
12
  - PostgreSQL 9.6.1
13
13
  - PhantomJS 1.8.1
14
14
 
@@ -60,7 +60,13 @@ open coverage/index.html
60
60
 
61
61
  ## Staging
62
62
 
63
- TODO:
63
+ We're using Heroku as Staging environment. Take a look in the
64
+ [documentation](https://devcenter.heroku.com/articles/getting-started-with-rails5) to setup Heroku in your machine.
65
+
66
+ ```sh
67
+ git push heroku master
68
+ heroku run rake db:migrate
69
+ ```
64
70
 
65
71
  ## Style
66
72
 
@@ -0,0 +1,19 @@
1
+ image: magrathealabs/ruby:2.3
2
+
3
+ clone:
4
+ depth: 3
5
+
6
+ pipelines:
7
+ default:
8
+ - step:
9
+ script:
10
+ - /etc/init.d/postgresql start
11
+ - sudo -u postgres sh -c 'createuser <%= app_name.underscore %>_test & createdb <%= app_name.underscore %>_test'
12
+ - sudo -u postgres psql -c "ALTER USER <%= app_name.underscore %>_test PASSWORD '<%= app_name.underscore %>_test' CREATEDB SUPERUSER;"
13
+ - cp config/database.yml.example config/database.yml
14
+ - apt-get update -yqqq
15
+ - apt-get -qq -y --force-yes install apt-utils bzip2 nodejs-legacy npm
16
+ - npm install -g phantomjs-prebuilt
17
+ - bundle install --jobs $(nproc)
18
+ - bundle exec rake db:schema:load RAILS_ENV=test
19
+ - bundle exec rake test
@@ -0,0 +1,29 @@
1
+ default: &default
2
+ adapter: postgresql
3
+ encoding: unicode
4
+ # http://guides.rubyonrails.org/configuring.html#database-pooling
5
+ pool: <%%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
6
+
7
+ development:
8
+ <<: *default
9
+ database: <%= app_name.underscore %>_development
10
+ username: <%%= ENV['POSTGRESQL_USERNAME'] || 'postgres' %>
11
+ password: <%%= ENV['POSTGRESQL_PASSWORD'] || '' %>
12
+ host: localhost
13
+ port: 5432
14
+
15
+ test:
16
+ <<: *default
17
+ encoding: utf8
18
+ host: localhost
19
+ timeout: 5000
20
+ database: <%= app_name.underscore %>_test
21
+ username: <%= app_name.underscore %>_test
22
+ password: <%= app_name.underscore %>_test
23
+ template: template0
24
+
25
+ production:
26
+ <<: *default
27
+ database: <%= app_name.underscore %>_production
28
+ username: <%= app_name.underscore %>
29
+ password: <%%= ENV['KAVO_DATABASE_PASSWORD'] %>
@@ -4,15 +4,19 @@ Rails:
4
4
  AllCops:
5
5
  Exclude:
6
6
  - 'db/schema.rb'
7
+ - 'bin/**'
7
8
  - 'vendor/**/*'
8
9
  - 'tmp/**/*'
10
+ - 'Guardfile'
11
+ - 'config/**/*'
12
+ - 'lib/tasks/*.rake'
9
13
 
10
14
  Documentation:
11
15
  Enabled: false
12
16
 
13
17
  Metrics/AbcSize:
14
18
  Exclude:
15
- - 'db/migrate/*'
19
+ - 'db/**/*'
16
20
 
17
21
  Metrics/BlockLength:
18
22
  Exclude:
@@ -24,6 +28,11 @@ Metrics/ClassLength:
24
28
  Exclude:
25
29
  - 'test/**/*'
26
30
 
31
+ Metrics/BlockLength:
32
+ Exclude:
33
+ - 'db/migrate/**'
34
+ - 'test/**/*'
35
+
27
36
  Metrics/LineLength:
28
37
  Max: 120
29
38
 
@@ -0,0 +1,10 @@
1
+ SimpleCov.start do
2
+ add_filter 'bin/'
3
+ add_filter 'config/'
4
+ add_filter 'test/'
5
+
6
+ add_group 'Controllers', 'app/controllers'
7
+ add_group 'Helpers', 'app/helpers'
8
+ add_group 'Models', 'app/models'
9
+ add_group 'Libraries', 'lib/'
10
+ end
data/lib/mecha/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Mecha
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  RUBY_VERSION = '>= 2.4'.freeze
4
4
  RAILS_VERSION = '~> 5.0.0'.freeze
5
5
  end
data/lib/mecha.rb CHANGED
@@ -1,8 +1,19 @@
1
1
  require 'mecha/version'
2
+ require 'mecha/support/string'
2
3
  require 'mecha/generators/app_generator'
3
4
  require 'mecha/app_builder'
4
5
 
5
6
  module Mecha
7
+ @opts = nil
8
+
9
+ def self.opts=(opts)
10
+ @opts = opts
11
+ end
12
+
13
+ def self.opts
14
+ @opts
15
+ end
16
+
6
17
  def self.config_templates_path
7
18
  templates_path = File.expand_path(File.join('mecha', 'templates'), File.dirname(__FILE__))
8
19
  Mecha::AppGenerator.source_root(templates_path)
data/mecha.gemspec CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.required_ruby_version = Mecha::RUBY_VERSION
28
28
 
29
29
  spec.add_dependency 'rails', Mecha::RAILS_VERSION
30
+ spec.add_dependency 'slop'
30
31
 
31
32
  spec.add_development_dependency 'bundler', '~> 1.14'
32
33
  spec.add_development_dependency 'rake', '~> 12.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mecha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Magrathea Labs
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-22 00:00:00.000000000 Z
11
+ date: 2017-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 5.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: slop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -89,10 +103,14 @@ files:
89
103
  - lib/mecha.rb
90
104
  - lib/mecha/app_builder.rb
91
105
  - lib/mecha/generators/app_generator.rb
106
+ - lib/mecha/support/string.rb
92
107
  - lib/mecha/templates/Gemfile.erb
93
108
  - lib/mecha/templates/Guardfile
94
109
  - lib/mecha/templates/README.md.erb
110
+ - lib/mecha/templates/bitbucket-pipelines.yml.erb
111
+ - lib/mecha/templates/config/databases/postgresql.yml.erb
95
112
  - lib/mecha/templates/rubocop.yml
113
+ - lib/mecha/templates/simplecov
96
114
  - lib/mecha/templates/test_helper.rb
97
115
  - lib/mecha/version.rb
98
116
  - mecha.gemspec
@@ -117,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
135
  version: '0'
118
136
  requirements: []
119
137
  rubyforge_project:
120
- rubygems_version: 2.6.10
138
+ rubygems_version: 2.6.11
121
139
  signing_key:
122
140
  specification_version: 4
123
141
  summary: Generate a Rails app using MLabs defaults.