bundler-bouncer 0.1.0 → 0.1.2

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.
data/Rakefile CHANGED
@@ -18,7 +18,8 @@ end
18
18
  spec = Gem::Specification.new do |s|
19
19
  s.name = "bundler-bouncer"
20
20
  s.version = File.read 'Version.txt'
21
- s.summary = "Exits app if you forgot to run under bundle exec"
21
+ s.summary = "Exits app if you forgot to run under bundle exec."
22
+ s.description = "Should your app run in the Bundler sandbox? Well then make sure it is, let bundler-bouncer kick you out of your app if you forgot to `bundle exec` it. Prevents absurdly difficult to find bugs, prevents you from propagating your system with bad data, eases the mind."
22
23
  s.author = "Joshua Cheek"
23
24
  s.email = "josh.cheek@gmail.com"
24
25
  s.homepage = "https://github.com/JoshCheek/bundler-bouncer"
data/Readme.md CHANGED
@@ -0,0 +1,48 @@
1
+ bundler-bouncer
2
+ ===============
3
+
4
+ Description
5
+ -----------
6
+
7
+ Should your app run in the Bundler sandbox? Well then make sure it is, let bundler-bouncer kick you out of your app if you forgot to `bundle exec` it. Prevents absurdly difficult to find bugs, prevents you from propagating your system with bad data, eases the mind. In the [Pragmatic Programmer](http://pragprog.com/the-pragmatic-programmer/extracts/tips), Dave Thomas and Andy Hunt say to Crash Early, because "The alternative may be to continue, writing corrupted data to some vital database" which, I did, because I wasn't using Bundler on one rake task. Then, later, when I tried to deserialize that data with Bundler running, it was invalid, sending me on a 2 day goose chase trying to figure out what was wrong. Don't let yourself get in my situation, get your app a bouncer.
8
+
9
+
10
+ Features
11
+ --------
12
+
13
+ If you set the environment variable USE_BUNDLER to 'no', it will warn you that it isn't using Bundler, but won't kick you out. This enables you to use tools like [rubygems-bundler](https://rubygems.org/gems/rubygems-bundler).
14
+
15
+
16
+ Usage
17
+ -----
18
+
19
+ Given a Gemfile that looks like this:
20
+
21
+ source :rubygems
22
+ gem 'bundler-bouncer', '=0.1.0'
23
+
24
+ *(don't forget to `bundle install`)*
25
+
26
+ And a main.rb that looks like this:
27
+
28
+ require "bundler/bouncer"
29
+ puts "hello world"
30
+
31
+ When you run `bundle exec ruby main.rb`, your app will print `hello world`, just like you'd expect.
32
+
33
+
34
+ But when you forget, and run `ruby main.rb` You will get bounced out:
35
+
36
+ Try running this app again with `bundle exec`
37
+
38
+
39
+ Recommendation
40
+ --------------
41
+
42
+ Stick it at the top of your Rakefile.
43
+
44
+
45
+ Install
46
+ -------
47
+
48
+ `$ gem install bundler-bouncer`
@@ -1,7 +1,7 @@
1
1
  module Bundler
2
2
  module Bouncer
3
3
  Messages = {
4
- :missing_bundler => "\e[31mTry running this app again with `bundle exec`\e[0m",
4
+ :missing_bundler => "\e[31mNo dice, pal. Try again when you can remember to `bundle exec`.\e[0m",
5
5
  :turned_off => "\e[33mWarning: Bundler is not running.\e[0m",
6
6
  }
7
7
  end
@@ -2,28 +2,37 @@ require "#{File.dirname __FILE__}/spec_helper"
2
2
  describe 'bundler-bouncer' do
3
3
 
4
4
  context 'from a file invoked with `bundle exec`' do
5
- subject { run_app 'with_bundler', :bundler => true }
6
- its(:exitstatus) { should be_zero }
5
+ subject { run_app :bundler => true }
6
+ its(:exitstatus) { should == 0 }
7
7
  its(:stderr) { should == '' }
8
8
  its(:stdout) { should == '' }
9
9
  end
10
10
 
11
11
  context 'from a file invoked without `bundle exec`' do
12
12
  context 'with USE_BUNDLER set to no' do
13
- subject { run_app 'without_bundler', :bundler => false, :USE_BUNDLER => 'no' }
13
+ subject { run_app :bundler => false, :USE_BUNDLER => 'no' }
14
14
  its(:exitstatus) { should == 0 }
15
15
  its(:stdout) { should == '' }
16
16
  its(:stderr) { should == bouncer_message(:turned_off) }
17
17
  its(:stderr) { should be_coloured :yellow }
18
18
  end
19
19
 
20
- context 'with USE_BUNDLER set to force' do
21
- subject { run_app 'without_bundler', :bundler => false, :USE_BUNDLER => 'force' }
20
+ shared_examples_for 'USE_BUNDLER set to something other than "no"' do
22
21
  its(:exitstatus) { should == 1 }
23
22
  its(:stdout) { should == '' }
24
23
  its(:stderr) { should == bouncer_message(:missing_bundler) }
25
24
  its(:stderr) { should be_coloured :red }
26
25
  end
26
+
27
+ context 'with USE_BUNDLER set to force' do
28
+ subject { run_app :bundler => false, :USE_BUNDLER => 'force' }
29
+ it_should_behave_like 'USE_BUNDLER set to something other than "no"'
30
+ end
31
+
32
+ context 'with USE_BUNDLER not set' do
33
+ subject { run_app :bundler => false }
34
+ it_should_behave_like 'USE_BUNDLER set to something other than "no"'
35
+ end
27
36
  end
28
37
 
29
38
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/josh/code/bundler-bouncer
3
3
  specs:
4
- bundler-bouncer (0.1.0)
4
+ bundler-bouncer (0.1.2)
5
5
 
6
6
  GEM
7
7
  specs:
@@ -63,8 +63,8 @@ class InvokedApp < Struct.new(:exitstatus, :stdout, :stderr)
63
63
  end
64
64
 
65
65
 
66
- def run_app(dir, options)
67
- Dir.chdir "#{File.dirname __FILE__}/mock_projects/#{dir}" do
66
+ def run_app(options)
67
+ Dir.chdir "#{File.dirname __FILE__}/mock_projects/with#{options[:bundler] ? '' : 'out'}_bundler" do
68
68
  use_bundler_env options[:USE_BUNDLER] do
69
69
  InvokedApp.invoke app_command(options)
70
70
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: bundler-bouncer
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.1.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Joshua Cheek
@@ -34,7 +34,7 @@ dependencies:
34
34
  version: 1.0.15
35
35
  type: :development
36
36
  version_requirements: *id002
37
- description:
37
+ description: Should your app run in the Bundler sandbox? Well then make sure it is, let bundler-bouncer kick you out of your app if you forgot to `bundle exec` it. Prevents absurdly difficult to find bugs, prevents you from propagating your system with bad data, eases the mind.
38
38
  email: josh.cheek@gmail.com
39
39
  executables: []
40
40
 
@@ -47,7 +47,6 @@ files:
47
47
  - Rakefile
48
48
  - Readme.md
49
49
  - spec/bundler-bouncer_spec.rb
50
- - spec/mock_projects/dummy_gem-1.0.0.gem
51
50
  - spec/mock_projects/with_bundler/app.rb
52
51
  - spec/mock_projects/with_bundler/Gemfile
53
52
  - spec/mock_projects/with_bundler/Gemfile.lock
@@ -81,6 +80,6 @@ rubyforge_project:
81
80
  rubygems_version: 1.8.5
82
81
  signing_key:
83
82
  specification_version: 3
84
- summary: Exits app if you forgot to run under bundle exec
83
+ summary: Exits app if you forgot to run under bundle exec.
85
84
  test_files: []
86
85