blueberry_rails 0.4.1 → 1.0.0

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