breakfast 0.5.1 → 0.6.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: 28af3d5d9cae5b7f41a8b2a9902c4ba5df10873f
4
- data.tar.gz: 4d62dbc3c6a61489ea111d5418d448fec23a47c6
3
+ metadata.gz: 31c796f9a83ba4cb7c5256eddf561ac9eaabaa7f
4
+ data.tar.gz: 285940c7e59ef3dddcb87da0fc4a7a6b38936656
5
5
  SHA512:
6
- metadata.gz: 5fa202409d2c833f6a37c142eb2e3d717bc5c9ba93cf1a2a7863e7f5a3223051fb40c29f142bc5d8d6a413a73ad3bc1ef8fc32cc3e4d66954bc53d43a03011b5
7
- data.tar.gz: 57c3fd611d2e41b3d0af248281c89fcc00b1516520c93403a11a31843ba96e9e6746a3d382b0dca187a4b8aba52c53a679fc29dce2f9ec9b1ed0b21f6cf40fae
6
+ metadata.gz: a4a2f0c8d57eda1f1b3d690c0df87f413622610d6edc26b9a8e9d3569992a6ca8b1134efe449eb4117bbbf859992fb1e39bdb744e9c3bba4b1d2cc527ce384a4
7
+ data.tar.gz: 0f2fddfce600930dafeca1412e098bd9d1cd73b6e79e70bc17e569124d5acf4ff93d9d360a134b0980d33847ab9e609cb58ed01642a7bcbd540d46efab7113c5
@@ -1,5 +1,30 @@
1
1
  # CHANGE LOG
2
2
 
3
+ ### 0.6.0 - 2017-03-12
4
+ #### Upgrading to `0.6.0` from `0.5.x`
5
+ - Update gem with `bundle update breakfast`
6
+ - Update the JS package with `yarn upgrade breakfast-rails`
7
+ - If deploying with Capistrano, remove `require "breakfast/capistrano"` from
8
+ your `Capfile`. Remove any custom Breakfast settings from `config/deploy.rb`.
9
+ Ensure that you are using [Capistrano Rails](https://github.com/capistrano/rails)
10
+ and have `require 'capistrano/rails'` or `require 'capistrano/rails/assets'`
11
+ in your `Capfile`.
12
+ - If deploying with Heroku, run the following commands:
13
+ 1. heroku buildpacks:clear
14
+ 2. heroku buildpacks:set heroku/nodejs --index 1
15
+ 3. heroku buildpacks:set heroku/ruby --index 2
16
+ #### Fixed
17
+ - Puma hanging in clustered mode. Breakfast would fail to cleanly exit on Puma
18
+ exit, causing the server to hang indefinitely.
19
+ - Bumped Rails version dependency, can be used with Rails 5.0 and greater.
20
+ (Allows usage with Rails 5.1)
21
+ #### Removed
22
+ - Capistrano rake tasks. Previous behavior has been included into the Rails
23
+ asset:precompile task. Using the standard [Capistrano Rails](https://github.com/capistrano/rails)
24
+ gem is all that required now.
25
+ - Need for a custom Heroku buildpack.
26
+
27
+
3
28
  ### 0.5.1 - 2017-02-06
4
29
  #### Changed
5
30
  If `public/assets` does not exist Breakfast will now create the folder before
data/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  <p align="center">
2
2
  <img src="http://breakfast.devlocker.io/images/breakfast-illustration.png" width="400" />
3
3
  </p>
4
+
4
5
  # Breakfast
6
+
5
7
  [Breakfast](http://breakfast.devlocker.io/) integrates modern Javascript
6
8
  tooling into your Rails project. Powered by [Brunch.io](http://brunch.io).
7
9
 
@@ -15,31 +17,34 @@ See the official docs at
15
17
 
16
18
  View updates in the [CHANGELOG](https://github.com/devlocker/breakfast/blob/master/CHANGELOG.md)
17
19
 
18
- ### Latest Patch `0.5.1`
19
- #### Changed
20
- If `public/assets` does not exist Breakfast will now create the folder before
21
- attempting to write to it.
22
-
23
- ### Latest Release `0.5.0`
24
- #### Added
25
- - Adds support for [Yarn](https://yarnpkg.com/).
26
- - New installs now require Yarn
27
- - Capistrano options `:breakfast_yarn_path` && `:breakfast_yarn_install_command`
28
-
20
+ ### Latest Release `0.6.0`
21
+ #### Fixed
22
+ - Puma hanging in clustered mode. Breakfast would fail to cleanly exit on Puma
23
+ exit, causing the server to hang indefinitely.
24
+ - Bumped Rails version dependency, can be used with Rails 5.0 and greater.
25
+ (Allows usage with Rails 5.1)
29
26
  #### Removed
30
- - NPM client requirement
31
- - Capistrano options `:breakfast_npm_path` && `:breakfast_npm_install_command`
32
- have been removed.
27
+ - Capistrano rake tasks. Previous behavior has been included into the Rails
28
+ asset:precompile task. Using the standard [Capistrano Rails](https://github.com/capistrano/rails)
29
+ gem is all that required now.
30
+ - Need for a custom Heroku buildpack.
33
31
 
34
32
  ### Upgrading
35
- #### Upgrading to `0.5.0` from `0.4.0`
33
+ #### Upgrading to `0.6.0` from `0.5.x`
36
34
  - Update gem with `bundle update breakfast`
37
- - Bump the `breakfast-rails` version in `package.json` to `0.5.0`
38
- - Ensure [Yarn](https://yarnpkg.com/docs/install) is installed
39
- - Run `yarn install`
35
+ - Update the JS package with `yarn upgrade breakfast-rails`
36
+ - If deploying with Capistrano, remove `require "breakfast/capistrano"` from
37
+ your `Capfile`. Remove any custom Breakfast settings from `config/deploy.rb`.
38
+ Ensure that you are using [Capistrano Rails](https://github.com/capistrano/rails)
39
+ and have `require 'capistrano/rails'` or `require 'capistrano/rails/assets'`
40
+ in your `Capfile`.
41
+ - If deploying with Heroku, run the following commands:
42
+ 1. heroku buildpacks:clear
43
+ 2. heroku buildpacks:set heroku/nodejs --index 1
44
+ 3. heroku buildpacks:set heroku/ruby --index 2
40
45
 
41
46
  *Note* If you are deploying with Capistrano then Yarn is expected to be
42
- installed on
47
+ installed on the hosts your are deploying to.
43
48
 
44
49
  ### Contributing
45
50
  Bug reports and pull requests are welcome on GitHub at
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "bundler", "~> 1.12"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
24
  spec.add_development_dependency "rspec", "~> 3.0"
25
- spec.add_dependency "rails", "~> 5.0"
25
+ spec.add_dependency "rails", ">= 5.0"
26
26
  spec.add_dependency "actioncable", "~> 5.0"
27
27
  spec.add_dependency "listen", ">= 3.0"
28
28
  end
@@ -4,14 +4,13 @@ require "breakfast/brunch_watcher"
4
4
  require "breakfast/compilation_listener"
5
5
  require "breakfast/live_reload_channel"
6
6
  require "breakfast/manifest"
7
+ require "breakfast/helper"
8
+ require "breakfast/local_environment"
7
9
  require "breakfast/status_channel"
8
- require "breakfast/view_helper"
9
10
 
10
11
  module Breakfast
11
12
  STATUS_CHANNEL = "breakfast_status".freeze
12
13
  RELOAD_CHANNEL = "breakfast_live_reload".freeze
13
- BUILD_COMMAND = "./node_modules/brunch/bin/brunch build".freeze
14
- PRODUCTION_BUILD_COMMAND = "./node_modules/brunch/bin/brunch build --production".freeze
15
14
  end
16
15
 
17
- require "breakfast/railtie" if defined?(Rails)
16
+ require "breakfast/railtie" if defined?(::Rails)
@@ -4,17 +4,14 @@ module Breakfast
4
4
  class BrunchWatcher
5
5
  BRUNCH_COMMAND = "./node_modules/brunch/bin/brunch watch".freeze
6
6
 
7
- def self.spawn(log:)
8
- new(log: log).run
9
- end
10
-
7
+ attr_accessor :pid
11
8
  attr_reader :log
12
9
  def initialize(log:)
13
10
  @log = log
14
11
  end
15
12
 
16
13
  def run
17
- out, writer, pid = PTY.spawn(BRUNCH_COMMAND)
14
+ out, writer, self.pid = PTY.spawn(BRUNCH_COMMAND)
18
15
  writer.close
19
16
 
20
17
  Process.detach(pid)
@@ -24,7 +21,7 @@ module Breakfast
24
21
  output = out.readpartial(64.kilobytes).strip
25
22
  log.debug output
26
23
 
27
- output = output.gsub(/\e\[([;\d]+)?m/, '')
24
+ output = output.gsub(/\e\[([;\d]+)?m/, "")
28
25
  case output
29
26
  when /compiled/
30
27
  broadcast(status: "success", message: output.split("info: ").last)
@@ -41,6 +38,13 @@ module Breakfast
41
38
  end
42
39
  end
43
40
 
41
+ def terminate
42
+ Process.kill("TERM", @pid)
43
+ rescue Errno::ESRCH
44
+ # NOOP. Process exited cleanly or already terminated. Don't print
45
+ # exception to STDOUT
46
+ end
47
+
44
48
  private
45
49
 
46
50
  def broadcast(status:, message:)
@@ -0,0 +1,34 @@
1
+ module Breakfast
2
+ module Helper
3
+ def breakfast_autoreload_tag
4
+ if ::Rails.configuration.breakfast.environments.include?(::Rails.env)
5
+ content_tag :script do
6
+ <<-SCRIPT.html_safe
7
+ require("breakfast-rails").init({
8
+ host: "#{request.host}",
9
+ port: #{request.port},
10
+ strategies: {
11
+ js: "#{::Rails.configuration.breakfast.js_reload_strategy}",
12
+ css: "#{::Rails.configuration.breakfast.css_reload_strategy}",
13
+ html: "#{::Rails.configuration.breakfast.html_reload_strategy}",
14
+ rb: "#{::Rails.configuration.breakfast.ruby_reload_strategy}"
15
+ },
16
+ statusBarLocation: "#{::Rails.configuration.breakfast.status_bar_location}"
17
+ });
18
+ SCRIPT
19
+ end
20
+ end
21
+ end
22
+
23
+ include ActionView::Helpers::AssetUrlHelper
24
+ include ActionView::Helpers::AssetTagHelper
25
+
26
+ def compute_asset_path(path, options = {})
27
+ if ::Rails.configuration.breakfast.digest && ::Rails.configuration.breakfast.manifest.asset(path)
28
+ path = ::Rails.configuration.breakfast.manifest.asset(path)
29
+ end
30
+
31
+ super(path, options)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,53 @@
1
+ module Breakfast
2
+ class LocalEnvironment
3
+ def running_server?
4
+ possible_servers = %w[
5
+ rails
6
+ puma
7
+ passenger
8
+ unicorn
9
+ mongrel
10
+ webrick
11
+ rainbows
12
+ ]
13
+
14
+ possible_servers.any? do |server|
15
+ send "detect_#{server}"
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def detect_rails
22
+ defined?(::Rails::Server)
23
+ end
24
+
25
+ def detect_puma
26
+ defined?(::Puma) && File.basename($0) == "puma"
27
+ end
28
+
29
+ def detect_passenger
30
+ defined?(::PhusionPassenger)
31
+ end
32
+
33
+ def detect_thin
34
+ defined?(::Thin) && defined?(::Thin::Server)
35
+ end
36
+
37
+ def detect_unicorn
38
+ defined?(::Unicorn) && defined?(::Unicorn::HttpServer)
39
+ end
40
+
41
+ def detect_mongrel
42
+ defined?(::Mongrel) && defined?(::Mongrel::HttpServer)
43
+ end
44
+
45
+ def detect_webrick
46
+ defined?(::WEBrick) && defined?(::WEBrick::VERSION)
47
+ end
48
+
49
+ def detect_rainbows
50
+ defined?(::Rainbows) && defined?(::Rainbows::HttpServer)
51
+ end
52
+ end
53
+ end
@@ -68,7 +68,7 @@ module Breakfast
68
68
  files_to_keep = cache.keys.concat(cache.values)
69
69
 
70
70
  if (sprockets_manifest = Dir.entries("#{base_dir}").detect { |entry| entry =~ SPROCKETS_MANIFEST_REGEX })
71
- files_to_keep.concat(JSON.parse(File.read("#{base_dir}/#{sprockets_manifest}"))["files"].keys)
71
+ files_to_keep.concat(JSON.parse(File.read("#{base_dir}/#{sprockets_manifest}")).fetch("files", {}).keys)
72
72
  end
73
73
 
74
74
  Dir["#{base_dir}/**/*"].each do |path|
@@ -12,16 +12,16 @@ module Breakfast
12
12
  config.breakfast.css_reload_strategy = :hot
13
13
  config.breakfast.ruby_reload_strategy = :off
14
14
 
15
- config.breakfast.asset_output_folder = Rails.root.join("public", "assets")
16
- config.breakfast.source_code_folders = [Rails.root.join("app")]
15
+ config.breakfast.asset_output_folder = ::Rails.root.join("public", "assets")
16
+ config.breakfast.source_code_folders = [::Rails.root.join("app")]
17
17
  config.breakfast.environments = %w(development)
18
18
  config.breakfast.status_bar_location = :bottom
19
- config.breakfast.digest = !(Rails.env.development? || Rails.env.test?)
19
+ config.breakfast.digest = !(::Rails.env.development? || ::Rails.env.test?)
20
20
  end
21
21
 
22
22
  initializer "breakfast.setup_view_helpers" do |app|
23
23
  ActiveSupport.on_load(:action_view) do
24
- include ::Breakfast::ViewHelper
24
+ include ::Breakfast::Helper
25
25
  end
26
26
  end
27
27
 
@@ -34,14 +34,22 @@ module Breakfast
34
34
  config.breakfast.manifest = Breakfast::Manifest.new(base_dir: config.breakfast.asset_output_folder)
35
35
  end
36
36
 
37
- if config.breakfast.environments.include?(Rails.env) && LocalEnvironment.new.running_server?
37
+ if config.breakfast.environments.include?(::Rails.env) && Breakfast::LocalEnvironment.new.running_server?
38
+
38
39
  # Ensure public/assets directory exists
39
- FileUtils.mkdir_p(Rails.root.join('public', 'assets'))
40
+ FileUtils.mkdir_p(::Rails.root.join("public", "assets"))
41
+
42
+ # Start Brunch Process
43
+ @brunch = Breakfast::BrunchWatcher.new(log: ::Rails.logger)
44
+ Thread.start do
45
+ @brunch.run
46
+ end
40
47
 
41
- Thread.new do
42
- Breakfast::BrunchWatcher.spawn(log: Rails.logger)
48
+ at_exit do
49
+ @brunch.terminate
43
50
  end
44
51
 
52
+ # Setup file listeners
45
53
  Breakfast::CompilationListener.start(
46
54
  asset_output_folder: config.breakfast.asset_output_folder,
47
55
  source_code_folders: config.breakfast.source_code_folders
@@ -53,56 +61,4 @@ module Breakfast
53
61
  ActionView::Helpers::AssetUrlHelper::ASSET_PUBLIC_DIRECTORIES[:image] = "/assets"
54
62
  ActionView::Helpers::AssetUrlHelper::ASSET_PUBLIC_DIRECTORIES[:stylesheet] = "/assets"
55
63
  end
56
-
57
- class LocalEnvironment
58
- def running_server?
59
- possible_servers = %w[
60
- rails
61
- puma
62
- passenger
63
- unicorn
64
- mongrel
65
- webrick
66
- rainbows
67
- ]
68
-
69
- possible_servers.any? do |server|
70
- send "detect_#{server}"
71
- end
72
- end
73
-
74
- private
75
-
76
- def detect_rails
77
- defined?(Rails::Server)
78
- end
79
-
80
- def detect_puma
81
- defined?(::Puma) && File.basename($0) == "puma"
82
- end
83
-
84
- def detect_passenger
85
- defined?(::PhusionPassenger)
86
- end
87
-
88
- def detect_thin
89
- defined?(::Thin) && defined?(::Thin::Server)
90
- end
91
-
92
- def detect_unicorn
93
- defined?(::Unicorn) && defined?(::Unicorn::HttpServer)
94
- end
95
-
96
- def detect_mongrel
97
- defined?(::Mongrel) && defined?(::Mongrel::HttpServer)
98
- end
99
-
100
- def detect_webrick
101
- defined?(::WEBrick) && defined?(::WEBrick::VERSION)
102
- end
103
-
104
- def detect_rainbows
105
- defined?(::Rainbows) && defined?(::Rainbows::HttpServer)
106
- end
107
- end
108
64
  end
@@ -3,7 +3,6 @@ require "rails"
3
3
  module Breakfast
4
4
  class StatusChannel < ::ActionCable::Channel::Base
5
5
  def subscribed
6
- logger.info "Subscribed to channel"
7
6
  stream_from "breakfast_status"
8
7
  end
9
8
  end
@@ -1,3 +1,3 @@
1
1
  module Breakfast
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -2,19 +2,19 @@ require "rails/generators"
2
2
 
3
3
  module Breakfast
4
4
  module Generators
5
- class InstallGenerator < Rails::Generators::Base
5
+ class InstallGenerator < ::Rails::Generators::Base
6
6
  source_root File.expand_path("../templates", __FILE__)
7
7
  NODE_VERSION = Gem::Version.new("4.1.0")
8
8
 
9
9
  def install
10
10
  if node_prerequisites_installed?
11
11
  create_brunch_config
12
- create_package_json
12
+ create_package_json if using_rails_5_dot_0?
13
+ install_required_packages
13
14
  create_directory_structure
14
15
  create_app_js_file
15
16
  create_app_scss_file
16
17
  create_gitkeep_files
17
- run_yarn_install
18
18
  add_node_modules_to_gitignore
19
19
 
20
20
  puts <<-SUCCESS.strip_heredoc
@@ -59,6 +59,11 @@ module Breakfast
59
59
  copy_file "package.json", "package.json"
60
60
  end
61
61
 
62
+ def install_required_packages
63
+ run "yarn add actioncable breakfast-rails jquery jquery-ujs turbolinks"
64
+ run "yarn add --dev brunch babel brunch clean-css-brunch sass-brunch uglify-js-brunch"
65
+ end
66
+
62
67
  def create_directory_structure
63
68
  empty_directory "app/frontend/css"
64
69
  empty_directory "app/frontend/images"
@@ -79,10 +84,6 @@ module Breakfast
79
84
  create_file "app/frontend/vendor/.gitkeep"
80
85
  end
81
86
 
82
- def run_yarn_install
83
- run "yarn install"
84
- end
85
-
86
87
  def add_node_modules_to_gitignore
87
88
  ignore = <<-IGNORE.strip_heredoc
88
89
  # Added by Breakfast Gem
@@ -94,6 +95,10 @@ module Breakfast
94
95
 
95
96
  append_to_file(".gitignore", ignore)
96
97
  end
98
+
99
+ def using_rails_5_dot_0?
100
+ Gem::Version.new(::Rails.version) < Gem::Version.new("5.1")
101
+ end
97
102
  end
98
103
  end
99
104
  end
@@ -1,10 +1,10 @@
1
1
  // Turbolinks - To disable remove the next two lines.
2
2
  // https://github.com/turbolinks/turbolinks
3
- import Turbolinks from "turbolinks";
3
+ import Turbolinks from 'turbolinks';
4
4
  Turbolinks.start();
5
5
 
6
6
  // Require https://github.com/rails/jquery-ujs
7
- import "jquery-ujs";
7
+ import 'jquery-ujs';
8
8
 
9
9
  const App = {
10
10
  init() {
@@ -1,10 +1,7 @@
1
1
  module.exports = {
2
2
  files: {
3
3
  javascripts: {
4
- joinTo: {
5
- 'app.js': /^app\/frontend\/js\//,
6
- 'vendor.js': /^(?!app\/frontend\/js)/
7
- }
4
+ joinTo: 'app.js'
8
5
  },
9
6
  stylesheets: {
10
7
  joinTo: 'app.css'
@@ -22,10 +19,10 @@ module.exports = {
22
19
 
23
20
  paths: {
24
21
  watched: [
25
- "app/frontend",
22
+ 'app/frontend',
26
23
  ],
27
24
 
28
- public: "public/assets"
25
+ public: 'public/assets'
29
26
  },
30
27
 
31
28
  conventions: {
@@ -34,9 +31,9 @@ module.exports = {
34
31
 
35
32
  npm: {
36
33
  globals: {
37
- $: "jquery",
38
- jQuery: "jquery",
39
- breakfast: "breakfast-rails"
34
+ $: 'jquery',
35
+ jQuery: 'jquery',
36
+ breakfast: 'breakfast-rails'
40
37
  }
41
38
  }
42
39
  };
@@ -1,18 +1,7 @@
1
1
  {
2
2
  "repository": {},
3
3
  "dependencies": {
4
- "actioncable": "^5.0.0",
5
- "breakfast-rails": "0.5.0",
6
- "jquery": "^3.1.0",
7
- "jquery-ujs": "^1.2.2",
8
- "turbolinks": "^5.0.0"
9
4
  },
10
5
  "devDependencies": {
11
- "brunch": "~2.10.5",
12
- "babel-brunch": "~6.0.0",
13
- "css-brunch": "^2.6.1",
14
- "clean-css-brunch": "~1.8.0",
15
- "sass-brunch": "~2.9.0",
16
- "uglify-js-brunch": "~2.1.0"
17
6
  }
18
7
  }
@@ -3,43 +3,64 @@ require "breakfast"
3
3
 
4
4
  namespace :breakfast do
5
5
  namespace :assets do
6
- desc "Build assets"
7
- task :build => :environment do
8
- exec(Breakfast::BUILD_COMMAND)
6
+ desc "Prepare assets and digests for production deploy"
7
+ task compile: [:environment] do
8
+ Rake::Task["breakfast:assets:build_production"].execute
9
+ Rake::Task["breakfast:assets:digest"].execute
10
+ Rake::Task["breakfast:assets:clean"].execute
9
11
  end
10
12
 
11
13
  desc "Build assets for production"
12
- task :build_production => :environment do
13
- exec(Breakfast::PRODUCTION_BUILD_COMMAND)
14
+ task build_production: :environment do
15
+ system "NODE_ENV=production ./node_modules/brunch/bin/brunch build --production"
16
+ end
17
+
18
+ desc "Build assets"
19
+ task build: :environment do
20
+ system "./node_modules/brunch/bin/brunch build"
14
21
  end
15
22
 
16
23
  desc "Add a digest to non-fingerprinted assets"
17
- task :digest => :environment do
18
- if Rails.configuration.breakfast.manifest
19
- Rails.configuration.breakfast.manifest.digest!
24
+ task digest: :environment do
25
+ if ::Rails.configuration.breakfast.manifest
26
+ ::Rails.configuration.breakfast.manifest.digest!
20
27
  else
21
28
  raise Breakfast::ManifestDisabledError
22
29
  end
23
30
  end
24
31
 
25
32
  desc "Remove out of date assets"
26
- task :clean => :environment do
27
- if Rails.configuration.breakfast.manifest
28
- Rails.configuration.breakfast.manifest.clean!
33
+ task clean: :environment do
34
+ if ::Rails.configuration.breakfast.manifest
35
+ ::Rails.configuration.breakfast.manifest.clean!
29
36
  else
30
37
  raise Breakfast::ManifestDisabledError
31
38
  end
32
39
  end
33
40
 
34
41
  desc "Remove manifest and fingerprinted assets"
35
- task :nuke => :environment do
36
- if Rails.configuration.breakfast.manifest
37
- Rails.configuration.breakfast.manifest.nuke!
42
+ task nuke: :environment do
43
+ if ::Rails.configuration.breakfast.manifest
44
+ ::Rails.configuration.breakfast.manifest.nuke!
38
45
  else
39
46
  raise Breakfast::ManifestDisabledError
40
47
  end
41
48
  end
42
49
  end
50
+
51
+ namespace :yarn do
52
+ desc "Install package.json dependencies with Yarn"
53
+ task :install do
54
+ system "yarn"
55
+ end
56
+ end
57
+ end
58
+
59
+ if Rake::Task.task_defined?("assets:precompile")
60
+ Rake::Task["assets:precompile"].enhance do
61
+ Rake::Task["breakfast:yarn:install"].execute
62
+ Rake::Task["breakfast:assets:compile"].execute
63
+ end
43
64
  end
44
65
 
45
66
  module Breakfast
@@ -47,7 +68,7 @@ module Breakfast
47
68
  def initialize
48
69
  super(
49
70
  <<~ERROR
50
- Rails.configuration.breakfast.manifest is set to false.
71
+ ::Rails.configuration.breakfast.manifest is set to false.
51
72
  Enable it by adding the following in your environment file:
52
73
 
53
74
  config.breakfast.manifest.digest = true
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "breakfast-rails",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Assets for the Breakfast Gem",
5
5
  "main": "./lib/breakfast-rails.js",
6
6
  "scripts": {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: breakfast
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Koperwas
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-06 00:00:00.000000000 Z
11
+ date: 2017-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,14 +56,14 @@ dependencies:
56
56
  name: rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '5.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '5.0'
69
69
  - !ruby/object:Gem::Dependency
@@ -115,15 +115,14 @@ files:
115
115
  - breakfast.gemspec
116
116
  - lib/breakfast.rb
117
117
  - lib/breakfast/brunch_watcher.rb
118
- - lib/breakfast/capistrano.rb
119
- - lib/breakfast/capistrano/tasks/breakfast.rake
120
118
  - lib/breakfast/compilation_listener.rb
119
+ - lib/breakfast/helper.rb
121
120
  - lib/breakfast/live_reload_channel.rb
121
+ - lib/breakfast/local_environment.rb
122
122
  - lib/breakfast/manifest.rb
123
123
  - lib/breakfast/railtie.rb
124
124
  - lib/breakfast/status_channel.rb
125
125
  - lib/breakfast/version.rb
126
- - lib/breakfast/view_helper.rb
127
126
  - lib/generators/breakfast/install_generator.rb
128
127
  - lib/generators/breakfast/templates/app.js
129
128
  - lib/generators/breakfast/templates/app.scss
@@ -157,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
156
  version: '0'
158
157
  requirements: []
159
158
  rubyforge_project:
160
- rubygems_version: 2.5.1
159
+ rubygems_version: 2.6.8
161
160
  signing_key:
162
161
  specification_version: 4
163
162
  summary: Integrates Brunch into Rails
@@ -1,8 +0,0 @@
1
- require "capistrano/version"
2
-
3
- if defined?(Capistrano::VERSION) && Gem::Version.new(Capistrano::VERSION).release >= Gem::Version.new("3.0.0")
4
- load File.expand_path("../capistrano/tasks/breakfast.rake", __FILE__)
5
- else
6
- raise "Requires Capistrano V3"
7
- end
8
-
@@ -1,37 +0,0 @@
1
- namespace :breakfast do
2
- desc "Compile assets for production use"
3
- task :compile do
4
- on roles fetch(:breakfast_roles) do |host|
5
- within release_path do
6
- with rails_env: "#{fetch(:rails_env) || fetch(:stage)}" do
7
- execute fetch(:breakfast_yarn_path).to_sym, fetch(:breakfast_yarn_install_command)
8
- execute :rails, "breakfast:assets:build_production"
9
- execute :rails, "breakfast:assets:digest"
10
- end
11
- end
12
- end
13
- end
14
-
15
- desc "Clean out old assets"
16
- task :clean do
17
- on roles fetch(:breakfast_roles) do |host|
18
- within release_path do
19
- with rails_env: "#{fetch(:rails_env) || fetch(:stage)}" do
20
- execute :rails, "breakfast:assets:clean"
21
- end
22
- end
23
- end
24
- end
25
-
26
- after "deploy:updated", "breakfast:compile"
27
- after "deploy:published", "breakfast:clean"
28
- end
29
-
30
-
31
- namespace :load do
32
- task :defaults do
33
- set :breakfast_roles, -> { :web }
34
- set :breakfast_yarn_path, "/usr/bin/yarn"
35
- set :breakfast_yarn_install_command, "install"
36
- end
37
- end
@@ -1,34 +0,0 @@
1
- module Breakfast
2
- module ViewHelper
3
- def breakfast_autoreload_tag
4
- if Rails.configuration.breakfast.environments.include?(Rails.env)
5
- content_tag :script do
6
- <<-SCRIPT.html_safe
7
- require("breakfast-rails").init({
8
- host: "#{request.host}",
9
- port: #{request.port},
10
- strategies: {
11
- js: "#{Rails.configuration.breakfast.js_reload_strategy}",
12
- css: "#{Rails.configuration.breakfast.css_reload_strategy}",
13
- html: "#{Rails.configuration.breakfast.html_reload_strategy}",
14
- rb: "#{Rails.configuration.breakfast.ruby_reload_strategy}"
15
- },
16
- statusBarLocation: "#{Rails.configuration.breakfast.status_bar_location}"
17
- });
18
- SCRIPT
19
- end
20
- end
21
- end
22
-
23
- include ActionView::Helpers::AssetUrlHelper
24
- include ActionView::Helpers::AssetTagHelper
25
-
26
- def compute_asset_path(path, options = {})
27
- if Rails.configuration.breakfast.digest && Rails.configuration.breakfast.manifest.asset(path)
28
- path = Rails.configuration.breakfast.manifest.asset(path)
29
- end
30
-
31
- super(path, options)
32
- end
33
- end
34
- end