blueberry_rails 0.4.1 → 1.0.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 (90) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +47 -0
  3. data/.eslintrc +21 -0
  4. data/.hound.yml +0 -3
  5. data/.rubocop.yml +22 -13
  6. data/.ruby-version +1 -1
  7. data/README.md +1 -53
  8. data/blueberry_rails.gemspec +2 -2
  9. data/lib/blueberry_rails/app_builder.rb +45 -74
  10. data/lib/blueberry_rails/generators/app_generator.rb +21 -25
  11. data/lib/blueberry_rails/version.rb +3 -3
  12. data/spec/blueberry_rails_spec.rb +7 -23
  13. data/templates/Gemfile_custom.erb +24 -39
  14. data/templates/Procfile +1 -0
  15. data/templates/app.json.erb +2 -2
  16. data/templates/circle.yml.erb +68 -10
  17. data/templates/config/initializers/translation_engine.rb +1 -1
  18. data/templates/gitignore_custom.erb +7 -5
  19. data/templates/puma.rb +2 -3
  20. data/templates/spec/controllers/root_controller_spec.rb +2 -4
  21. data/templates/spec/drivers.rb +16 -0
  22. data/templates/spec/factories/administrators.rb +2 -2
  23. data/templates/spec/factories/users.rb +2 -2
  24. data/templates/spec/factories_spec.rb +3 -3
  25. data/templates/spec/factory_bot_syntax.rb +3 -0
  26. data/templates/spec/spec_helper.rb +0 -7
  27. data/templates/views/layouts/admin.html.slim.erb +3 -3
  28. data/templates/views/layouts/application.html.slim.erb +3 -3
  29. data/templates/views/layouts/mailer.html.slim.erb +7 -0
  30. metadata +13 -68
  31. data/circle.yml +0 -5
  32. data/templates/admin_assets/javascripts/admin.coffee +0 -6
  33. data/templates/admin_assets/javascripts/admin/.keep +0 -0
  34. data/templates/admin_assets/stylesheets/admin.sass +0 -4
  35. data/templates/admin_assets/stylesheets/admin/.keep +0 -0
  36. data/templates/assets/icons/_font_icons.scss +0 -18
  37. data/templates/assets/images/blueberry-logo.png +0 -0
  38. data/templates/assets/javascripts/application.coffee +0 -6
  39. data/templates/assets/javascripts/common/.keep +0 -0
  40. data/templates/assets/javascripts/frontend/.keep +0 -0
  41. data/templates/assets/stylesheets/application.sass +0 -9
  42. data/templates/assets/stylesheets/frontend/base/buttons.sass +0 -3
  43. data/templates/assets/stylesheets/frontend/base/typo.sass +0 -3
  44. data/templates/assets/stylesheets/frontend/common/bootstrap-ms.sass +0 -128
  45. data/templates/assets/stylesheets/frontend/common/bootstrap-override.sass +0 -3
  46. data/templates/assets/stylesheets/frontend/common/bootstrap.sass +0 -50
  47. data/templates/assets/stylesheets/frontend/common/variables.sass +0 -37
  48. data/templates/assets/stylesheets/frontend/components/.keep +0 -0
  49. data/templates/assets/stylesheets/frontend/components/blocks.sass +0 -19
  50. data/templates/assets/stylesheets/frontend/components/navbar.sass +0 -0
  51. data/templates/assets/stylesheets/frontend/layout/body.sass +0 -3
  52. data/templates/assets/stylesheets/frontend/layout/footer.sass +0 -3
  53. data/templates/assets/stylesheets/frontend/layout/header.sass +0 -3
  54. data/templates/assets/stylesheets/frontend/pages/.keep +0 -0
  55. data/templates/assets/stylesheets/frontend/third-party/includes.sass +0 -1
  56. data/templates/assets/stylesheets/frontend/utils/functions.sass +0 -23
  57. data/templates/assets/stylesheets/frontend/utils/make-columns.sass +0 -67
  58. data/templates/assets/stylesheets/frontend/utils/mixins.sass +0 -29
  59. data/templates/assets/stylesheets/frontend/utils/render-to.sass +0 -66
  60. data/templates/assets/stylesheets/frontend/utils/renderto-debug.sass +0 -22
  61. data/templates/gulp/application.js.coffee +0 -11
  62. data/templates/gulp/application.sass +0 -10
  63. data/templates/gulp/config.coffee +0 -47
  64. data/templates/gulp/global.coffee +0 -3
  65. data/templates/gulp/global.sass +0 -8
  66. data/templates/gulp/gulp_helper.rb +0 -16
  67. data/templates/gulp/gulpfile.js +0 -20
  68. data/templates/gulp/message.coffee +0 -1
  69. data/templates/gulp/package.json +0 -53
  70. data/templates/gulp/rev_manifest.rb +0 -5
  71. data/templates/gulp/tasks/browserSync.coffee +0 -6
  72. data/templates/gulp/tasks/browserify.coffee +0 -50
  73. data/templates/gulp/tasks/build.coffee +0 -25
  74. data/templates/gulp/tasks/clean.coffee +0 -6
  75. data/templates/gulp/tasks/default.coffee +0 -3
  76. data/templates/gulp/tasks/fontIcons/generateIconSass.coffee +0 -23
  77. data/templates/gulp/tasks/fontIcons/index.coffee +0 -9
  78. data/templates/gulp/tasks/fontIcons/template.sass +0 -33
  79. data/templates/gulp/tasks/images.coffee +0 -12
  80. data/templates/gulp/tasks/rev/index.coffee +0 -12
  81. data/templates/gulp/tasks/rev/rev-assets.coffee +0 -11
  82. data/templates/gulp/tasks/rev/rev-font-workaround.coffee +0 -49
  83. data/templates/gulp/tasks/sass.coffee +0 -24
  84. data/templates/gulp/tasks/watch.coffee +0 -14
  85. data/templates/gulp/tasks/watchify.coffee +0 -6
  86. data/templates/gulp/util/bundleLogger.coffee +0 -23
  87. data/templates/gulp/util/handleErrors.coffee +0 -11
  88. data/templates/secret_token.rb.erb +0 -18
  89. data/templates/spec/factory_girl_syntax.rb +0 -3
  90. data/templates/tasks/icons.rake +0 -19
@@ -1,20 +0,0 @@
1
- /*
2
- gulpfile.js
3
- ===========
4
- Rather than manage one giant configuration file responsible
5
- for creating multiple tasks, each task has been broken out into
6
- its own file in gulp/tasks. Any files in that directory get
7
- automatically required below.
8
-
9
- To add a new task, simply add a new task file that directory.
10
- gulp/tasks/default.js specifies the default set of tasks to run
11
- when you run `gulp`.
12
- */
13
-
14
- var requireDir = require('require-dir');
15
-
16
- // Note the new way of requesting CoffeeScript since 1.7.x
17
- require('coffee-script/register');
18
-
19
- // Require all tasks in gulp/tasks, including subfolders
20
- requireDir('./gulp/tasks', { recurse: true });
@@ -1 +0,0 @@
1
- module.exports = 'Common.js module'
@@ -1,53 +0,0 @@
1
- {
2
- "name": "gulp-rails",
3
- "description": "Gulp Asset Pipeline with Rails",
4
- "engines": {
5
- "node": "0.10.36",
6
- "npm": "2.3.0"
7
- },
8
- "repository": {
9
- "type": "git",
10
- "url": "git://github.com/geoRG77/rails-gulp.git"
11
- },
12
- "scripts": {
13
- "postinstall": "gulp build"
14
- },
15
- "browserify": {
16
- "transform": [
17
- "coffeeify"
18
- ]
19
- },
20
- "dependencies": {
21
- "bootstrap-sass": "^3.3.4",
22
- "browser-sync": "~1.3.6",
23
- "browserify": "^8.0.2",
24
- "coffee-script": "^1.9.1",
25
- "coffeeify": "~0.7.0",
26
- "del": "^1.1.1",
27
- "gulp": "^3.8.7",
28
- "gulp-autoprefixer": "^2.0.0",
29
- "gulp-changed": "^0.4.1",
30
- "gulp-cjsx": "^2.0.0",
31
- "gulp-filesize": "0.0.6",
32
- "gulp-iconfont": "^1.0.0",
33
- "gulp-imagemin": "^0.6.2",
34
- "gulp-minify-css": "^1.0.0",
35
- "gulp-rename": "^1.2.0",
36
- "gulp-rev": "^3.0.1",
37
- "gulp-rev-collector": "^0.1.3",
38
- "gulp-sass": "~1.3.1",
39
- "gulp-sequence": "^0.3.2",
40
- "gulp-sourcemaps": "^1.2.8",
41
- "gulp-swig": "^0.7.4",
42
- "gulp-util": "^3.0.0",
43
- "lodash": "^2.4.1",
44
- "merge-stream": "^0.1.7",
45
- "pretty-hrtime": "~0.2.1",
46
- "require-dir": "^0.1.0",
47
- "vinyl-source-stream": "~0.1.1",
48
- "watchify": "^2.2.1"
49
- },
50
- "devDependencies": {
51
- "gulp-watch": "^4.1.1"
52
- }
53
- }
@@ -1,5 +0,0 @@
1
- rev_manifest_path = 'public/assets/rev-manifest.json'
2
-
3
- if File.exist?(rev_manifest_path)
4
- REV_MANIFEST = JSON.parse(File.read(rev_manifest_path))
5
- end
@@ -1,6 +0,0 @@
1
- browserSync = require 'browser-sync'
2
- gulp = require 'gulp'
3
- config = require('../config').browserSync
4
-
5
- gulp.task 'browserSync', ->
6
- browserSync config
@@ -1,50 +0,0 @@
1
- _ = require 'lodash'
2
- browserify = require 'browserify'
3
- browserSync = require 'browser-sync'
4
- bundleLogger = require '../util/bundleLogger'
5
- config = require('../config').browserify
6
- gulp = require 'gulp'
7
- handleErrors = require '../util/handleErrors'
8
- source = require 'vinyl-source-stream'
9
- watchify = require 'watchify'
10
-
11
- browserifyTask = (callback, devMode) ->
12
- bundleQueue = config.bundleConfigs.length
13
-
14
- browserifyThis = (bundleConfig) ->
15
- if devMode
16
- _.extend bundleConfig, watchify.args, debug: true
17
- bundleConfig = _.omit(bundleConfig, [ 'external', 'require' ])
18
- b = browserify(bundleConfig)
19
-
20
- bundle = ->
21
- bundleLogger.start bundleConfig.outputName
22
-
23
- b.bundle().on('error', handleErrors)
24
- .pipe source(bundleConfig.outputName)
25
- .pipe gulp.dest(bundleConfig.dest).on('end', reportFinished)
26
- .pipe browserSync.reload(stream: true)
27
-
28
- if devMode
29
- b = watchify(b)
30
- b.on 'update', bundle
31
- bundleLogger.watch bundleConfig.outputName
32
- else
33
- if bundleConfig.require
34
- b.require bundleConfig.require
35
- if bundleConfig.external
36
- b.external bundleConfig.external
37
-
38
- reportFinished = ->
39
- bundleLogger.end bundleConfig.outputName
40
- if bundleQueue
41
- bundleQueue--
42
- if bundleQueue == 0
43
- callback()
44
-
45
- bundle()
46
-
47
- config.bundleConfigs.forEach browserifyThis
48
-
49
- gulp.task 'browserify', browserifyTask
50
- module.exports = browserifyTask
@@ -1,25 +0,0 @@
1
- gulp = require 'gulp'
2
- gulpSequence = require 'gulp-sequence'
3
-
4
- gulp.task 'build', (cb) ->
5
- tasks = [
6
- 'clean'
7
- [ 'fontIcons', 'images' ]
8
- [ 'sass:production', 'browserify' ]
9
- ]
10
-
11
- if process.env.RAILS_ENV == 'production'
12
- tasks.push 'rev'
13
-
14
- tasks.push cb
15
- gulpSequence.apply this, tasks
16
-
17
- gulp.task 'development', (cb) ->
18
- tasks = [
19
- 'clean'
20
- [ 'fontIcons', 'images' ]
21
- [ 'sass', 'browserify' ]
22
- ]
23
-
24
- tasks.push cb
25
- gulpSequence.apply this, tasks
@@ -1,6 +0,0 @@
1
- gulp = require 'gulp'
2
- del = require 'del'
3
- config = require '../config'
4
-
5
- gulp.task 'clean', (cb) ->
6
- del [ config.publicAssets ], cb
@@ -1,3 +0,0 @@
1
- gulp = require 'gulp'
2
-
3
- gulp.task 'default', [ 'sass', 'watch' ]
@@ -1,23 +0,0 @@
1
- gulp = require 'gulp'
2
- config = require('../../config').fontIcons
3
- template = require 'gulp-swig'
4
- rename = require 'gulp-rename'
5
-
6
- module.exports = (codepoints, options) ->
7
- iconSass = template(data:
8
- icons: codepoints.map((icon) ->
9
- {
10
- name: icon.name
11
- code: icon.codepoint.toString(16)
12
- }
13
- )
14
- fontName: config.options.fontName
15
- fontPath: config.fontPath
16
- className: config.className
17
- comment: 'DO NOT EDIT DIRECTLY!\n Generated by ./gulp/tasks/fontIcons/ge' +
18
- 'nerateIconSass.coffee\n from ' + config.template)
19
-
20
- gulp.src(config.template)
21
- .pipe iconSass
22
- .pipe rename(config.sassOutputName)
23
- .pipe gulp.dest(config.sassDest)
@@ -1,9 +0,0 @@
1
- gulp = require 'gulp'
2
- iconfont = require 'gulp-iconfont'
3
- config = require('../../config').fontIcons
4
- generateIconSass = require './generateIconSass'
5
-
6
- gulp.task 'fontIcons', ->
7
- gulp.src(config.src)
8
- .pipe iconfont(config.options).on('codepoints', generateIconSass)
9
- .pipe gulp.dest(config.dest)
@@ -1,33 +0,0 @@
1
- // {{comment}}
2
-
3
- @font-face
4
- font-family: {{fontName}}
5
- src: url("{{fontPath}}/{{fontName}}.eot")
6
- src: url("{{fontPath}}/{{fontName}}.eot?#iefix") format('embedded-opentype'), url("{{fontPath}}/{{fontName}}.woff") format('woff'), url("{{fontPath}}/{{fontName}}.ttf") format('truetype'), url("{{fontPath}}/{{fontName}}.svg#{{fontName}}") format('svg')
7
- font-weight: normal
8
- font-style: normal
9
-
10
- =icon($content)
11
- &:before
12
- content: $content
13
- font-family: '{{fontName}}'
14
- font-style: normal
15
- font-variant: normal
16
- font-weight: normal
17
- line-height: 1
18
- speak: none
19
- text-transform: none
20
- -moz-osx-font-smoothing: grayscale
21
- -webkit-font-smoothing: antialiased
22
- @content
23
-
24
- {% for icon in icons -%}
25
- =icon--{{icon.name}}
26
- +icon("\{{icon.code}}")
27
- @content
28
-
29
- .icon
30
- &.{{icon.name}}
31
- +icon--{{icon.name}}
32
-
33
- {% endfor %}
@@ -1,12 +0,0 @@
1
- changed = require 'gulp-changed'
2
- gulp = require 'gulp'
3
- imagemin = require 'gulp-imagemin'
4
- config = require('../config').images
5
- browserSync = require 'browser-sync'
6
-
7
- gulp.task 'images', ->
8
- gulp.src(config.src)
9
- .pipe changed(config.dest)
10
- .pipe imagemin()
11
- .pipe gulp.dest(config.dest)
12
- .pipe browserSync.reload(stream: true)
@@ -1,12 +0,0 @@
1
- config = require '../../config'
2
- gulp = require 'gulp'
3
- revCollector = require 'gulp-rev-collector'
4
-
5
- # Replace asset references in compiled CSS and JS files
6
- gulp.task 'rev', [ 'rev-assets', 'rev-font-workaround' ], ->
7
- gulp.src([
8
- config.publicAssets + '/rev-manifest.json'
9
- config.publicAssets + '/**/*.{css,js}'
10
- ])
11
- .pipe revCollector()
12
- .pipe gulp.dest(config.publicAssets)
@@ -1,11 +0,0 @@
1
- config = require '../../config'
2
- gulp = require 'gulp'
3
- rev = require 'gulp-rev'
4
-
5
- # Add md5 hashes to assets
6
- gulp.task 'rev-assets', ->
7
- gulp.src(config.publicAssets + '/**/**.!(css|js|eot|woff|ttf)')
8
- .pipe rev()
9
- .pipe gulp.dest(config.publicAssets)
10
- .pipe rev.manifest()
11
- .pipe gulp.dest(config.publicAssets)
@@ -1,49 +0,0 @@
1
- # 2) Font rev workaround
2
- _ = require 'lodash'
3
- config = require '../../config'
4
- fs = require 'fs'
5
- gulp = require 'gulp'
6
- merge = require 'merge-stream'
7
- rename = require 'gulp-rename'
8
- rev = require 'gulp-rev'
9
-
10
- # .ttf fonts have an embedded timestamp, which cause the contents
11
- # of the file to change ever-so-slightly. This was a problem for
12
- # file reving, which generates a hash based on the contents of the file.
13
- # This meant that even if source files had not changed, the hash would
14
- # change with every recompile, as well as .eot, and .woff files, which
15
- # are derived from a source svg font
16
- # The solution is to only hash svg font files, then append the
17
- # generated hash to the ttf, eot, and woff files (instead of
18
- # leting each file generate its own hash)
19
-
20
- gulp.task 'rev-font-workaround', [ 'rev-assets' ], ->
21
- manifest = require('../../.' + config.publicAssets + '/rev-manifest.json')
22
- fontList = []
23
-
24
- _.each manifest, (reference, key) ->
25
- fontPath = config.fontIcons.dest.split(config.publicAssets)[1].substr(1)
26
-
27
- if key.match(fontPath + '/' + config.fontIcons.options.fontName)
28
- path = key.split('.svg')[0]
29
- hash = reference.split(path)[1].split('.svg')[0]
30
-
31
- fontList.push
32
- path: path
33
- hash: hash
34
-
35
- # Add hash to non-svg font files
36
- streams = fontList.map((file) ->
37
- # Add references in manifest
38
- [ '.eot', '.woff', '.ttf' ].forEach (ext) ->
39
- manifest[file.path + ext] = file.path + file.hash + ext
40
-
41
- gulp.src(config.publicAssets + '/' + file.path + '*.!(svg)')
42
- .pipe rename(suffix: file.hash)
43
- .pipe gulp.dest(config.fontIcons.dest)
44
- )
45
-
46
- # Re-write rev-manifest.json to disk
47
- fs.writeFile config.publicAssets + '/rev-manifest.json',
48
- JSON.stringify(manifest, null, 2)
49
- merge.apply this, streams
@@ -1,24 +0,0 @@
1
- gulp = require 'gulp'
2
- browserSync = require 'browser-sync'
3
- sass = require 'gulp-sass'
4
- sourcemaps = require 'gulp-sourcemaps'
5
- minifyCSS = require 'gulp-minify-css'
6
- handleErrors = require '../util/handleErrors'
7
- config = require('../config').sass
8
- autoprefixer = require 'gulp-autoprefixer'
9
-
10
- gulp.task 'sass', ->
11
- gulp.src(config.src)
12
- .pipe sourcemaps.init()
13
- .pipe sass(config.settings).on('error', handleErrors)
14
- .pipe autoprefixer(browsers: [ 'last 2 version' ])
15
- .pipe sourcemaps.write()
16
- .pipe gulp.dest(config.dest)
17
- .pipe browserSync.reload(stream: true)
18
-
19
- gulp.task 'sass:production', ->
20
- gulp.src(config.src)
21
- .pipe sass(config.settings).on('error', handleErrors)
22
- .pipe autoprefixer(browsers: [ 'last 2 version' ])
23
- .pipe minifyCSS()
24
- .pipe gulp.dest(config.dest)
@@ -1,14 +0,0 @@
1
- ### Notes:
2
- - gulp/tasks/browserify.js handles js recompiling with watchify
3
- - gulp/tasks/browserSync.js watches and reloads compiled files
4
- ###
5
-
6
- gulp = require 'gulp'
7
- config = require '../config'
8
- watch = require 'gulp-watch'
9
-
10
- gulp.task 'watch', [ 'watchify', 'browserSync' ], (callback) ->
11
- watch config.sass.src, ->
12
- gulp.start 'sass'
13
- watch config.images.src, ->
14
- gulp.start 'images'
@@ -1,6 +0,0 @@
1
- gulp = require 'gulp'
2
- browserifyTask = require './browserify'
3
-
4
- gulp.task 'watchify', (callback) ->
5
- # Start browserify task with devMode === true
6
- browserifyTask callback, true
@@ -1,23 +0,0 @@
1
- ### bundleLogger
2
- Provides gulp style logs to the bundle method in browserify.js
3
- ###
4
-
5
- gutil = require 'gulp-util'
6
- prettyHrtime = require 'pretty-hrtime'
7
- startTime = undefined
8
-
9
- module.exports =
10
- start: (filepath) ->
11
- startTime = process.hrtime()
12
- gutil.log 'Bundling', gutil.colors.green(filepath) + '...'
13
-
14
- watch: (bundleName) ->
15
- gutil.log 'Watching files required by', gutil.colors.yellow(bundleName)
16
-
17
- end: (filepath) ->
18
- taskTime = process.hrtime(startTime)
19
- prettyTime = prettyHrtime(taskTime)
20
- gutil.log 'Bundled',
21
- gutil.colors.green(filepath),
22
- 'in',
23
- gutil.colors.magenta(prettyTime)
@@ -1,11 +0,0 @@
1
- module.exports = ->
2
- args = Array::slice.call(arguments)
3
-
4
- # Send error to notification center with gulp-notify
5
- #notify.onError(
6
- # title: 'Compile Error'
7
- #message: '<%= error %>').apply this, args
8
- console.log args
9
-
10
- # Keep gulp from hanging on this task
11
- @emit 'end'
@@ -1,18 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
- #
3
- # Your secret key is used for verifying the integrity of signed cookies.
4
- # If you change this key, all old signed cookies will become invalid!
5
- #
6
- # Make sure the secret is at least 30 characters and all random,
7
- # no regular words or you'll be exposed to dictionary attacks.
8
- # You can use `rake secret` to generate a secure secret key.
9
- #
10
- # Make sure your secret_key_base is kept private
11
- # if you're sharing your code publicly.
12
-
13
- <%= app_const %>.config.secret_key_base = if Rails.env.development? || Rails.env.test?
14
- 'x' * 50
15
- else
16
- ENV['SECRET_TOKEN']
17
- end
18
-