bootboot 0.1.1 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f0ffd98be99f6485f9c7480c1af03185884bc7a3
4
- data.tar.gz: 9c2f985c296d6c1ea93c06a49437b9fd670a1ad8
2
+ SHA256:
3
+ metadata.gz: 14236a9169a7dea04af00afeb9f53f20cd53e70d969944f12824ba98f76e525a
4
+ data.tar.gz: 9a31116c9844389ef5a40e234c15a6cdbfaaf031ed67ceaf47856dd2c3496fa7
5
5
  SHA512:
6
- metadata.gz: 8992b0f398e049de5dc730d49f39ce35e908828168939583ff5d84362b6bc84d3193548c92f83117473a7887a6e5c22bb7d76c59aca0a52b3b9609b3dc518135
7
- data.tar.gz: c4a6e8932482b1e5dd96f8e3e26e08de41e71f8cc38a0872d696a3702381073ad324440b3e95dde8709910907dfe0fa03937530e9a95287584ae82d6e43c33a3
6
+ metadata.gz: add7b5ca8aa44d3bed18fdcc09b61cf12cc02174a9b2dc947393e22592b0ffa6bea5c4409a8f70564f7d4b501c2233e65a6a292a24c549c915fdd817d46a65f9
7
+ data.tar.gz: 1114c2d69483098dab6180f7b7ed9b59aea471386c95be1df06ed38f242a021ee2fcf5a21181ebe6eb35a3b73e5b90cedbec26198d20716d4c1a3ee5b3861b0e
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ## 👢👢 Bootboot
1
+ ## 👢👢 Bootboot - [![Build Status](https://travis-ci.com/Shopify/bootboot.svg?branch=master)](https://travis-ci.com/Shopify/bootboot)
2
2
 
3
3
  Introduction
4
4
  ------------
@@ -40,25 +40,161 @@ No matter what approach you decide to take, you'll need to create tooling to ens
40
40
 
41
41
  Bootboot is only useful if you decide to follow the second approach. It creates the required tooling as well as the Bundler workaround needed to enable dual booting.
42
42
 
43
-
44
-
45
43
  Installation
46
44
  ------------
47
45
  1) In your Gemfile, add this
48
46
  ```ruby
49
- plugin 'bootboot', '~> 0.1.1`
47
+ plugin 'bootboot', '~> 0.1.1'
50
48
  ```
51
49
  2) Run `bundle install && bundle bootboot`
52
50
  3) You're done. Commit the Gemfile and the Gemfile_next.lock
53
51
 
52
+ Note: You should only run `bundle bootboot` once to install the plugin, otherwise your Gemfile will get updated each time you run it.
53
+
54
54
  Dual boot it!
55
55
  ------------
56
56
  If you want to boot using the dependencies from the `Gemfile_next.lock`, run any bundler command prefixed with the `DEPENDENCIES_NEXT=1` ENV variable. I.e. `DEPENDENCIES_NEXT=1 bundle exec irb`.
57
57
 
58
+ **Note:** `bootboot` will use the gems and Ruby version specified per environment in your `Gemfile` to resolve dependencies and keep `Gemfile.lock` and `Gemfile_next.lock` in sync, but it does not do any magic to actually change the running Ruby version or install the gems in the environment you are not currently running, it simply tells Bundler which Ruby and gem versions to use in its resolution algorithm and keeps the lock files in sync. If you are a developer who is not involved in updating the dependency set, this should not affect you, simply use bundler normally. _However_, if you are involved in the dependency changes directly, you will often have to run `DEPENDENCIES_NEXT=1 bundle install` after making changes to the dependencies.
59
+
60
+ ```sh
61
+ # This will update Gemfile.lock and Gemfile_next.lock and install the gems
62
+ # specified in Gemfile.lock:
63
+ $ bundle update some_gem
64
+ # This will actually install the gems specified in Gemfile_next.lock
65
+ $ DEPENDENCIES_NEXT=1 bundle install
66
+ ```
67
+
68
+ Dual boot different Ruby versions
69
+ ---------------------------------
70
+
71
+ While dual booting is often used for framework upgrades, it is also possible to use `bootboot` to dual boot two Ruby versions, each with its own set of gems.
72
+
73
+ ```ruby
74
+ # Gemfile
75
+
76
+ if ENV['DEPENDENCIES_NEXT']
77
+ ruby '2.6.5'
78
+ else
79
+ ruby '2.5.7'
80
+ end
81
+ ```
82
+
83
+ Dual booting Ruby versions does incur some additional complications however, see the examples following for more detail.
84
+
85
+ Example: updating a gem while dual booting Ruby versions
86
+ --------------------------------------------------------
87
+
88
+ To dual boot an app while upgrading from Ruby 2.5.7 to Ruby 2.6.5, your Gemfile would look like this:
89
+
90
+ ```ruby
91
+ # Gemfile
92
+
93
+ if ENV['DEPENDENCIES_NEXT']
94
+ ruby '2.6.5'
95
+ else
96
+ ruby '2.5.7'
97
+ end
98
+ ```
99
+
100
+ After running `bundle install`, `Gemfile.lock` will have:
101
+
102
+ ```
103
+ RUBY VERSION
104
+ ruby 2.5.7p206
105
+ ```
106
+
107
+ and `Gemfile_next.lock` will have:
108
+
109
+ ```
110
+ RUBY VERSION
111
+ ruby 2.6.5p114
112
+ ```
113
+ Assuming there's a gem `some_gem` with the following constraints in its gemspecs:
58
114
 
59
- Keep` the Gemfile_next.lock` in sync
115
+ ```ruby
116
+ # some_gem-1.0.gemspec
117
+ spec.version = "1.0"
118
+ spec.required_ruby_version = '>= 2.5.7'
119
+ ```
120
+
121
+ ```ruby
122
+ # some_gem-2.0.gemspec
123
+ spec.version = "2.0"
124
+ spec.required_ruby_version = '>= 2.6.5'
125
+ ```
126
+
127
+ Running `bundle update some_gem` will use Ruby 2.5.7 to resolve `some_gem` for `Gemfile.lock` and Ruby 2.6.5 to resolve `some_gem` for `Gemfile_next.lock` with the following results:
128
+
129
+ Gemfile.lock:
130
+ ```
131
+ specs:
132
+ some_gem (1.0)
133
+ ```
134
+
135
+ Gemfile_next.lock:
136
+ ```
137
+ specs:
138
+ some_gem (2.0)
139
+ ```
140
+
141
+ **Note:** It is important to note that at this point, `some_gem 2.0` **will not** be installed on your system, it will simply be specified in `Gemfile_next.lock`, since installing it on the system would require changing the running Ruby version. This is sufficient to keep `Gemfile_next.lock` in sync, but is a potential source of confusion. To install gems under both versions of Ruby, see the next section.
142
+
143
+ Vendoring both sets of gems
144
+ ---------------------------
145
+ To vendor both sets of gems, make sure caching is enabled by checking `bundle config` or bundle gems using `bundle pack`.
146
+
147
+ ```bash
148
+ bundle pack
149
+ DEPENDENCIES_NEXT=1 bundle pack
150
+ ```
151
+
152
+ ### Example: running Ruby scripts while dual booting Ruby versions
153
+
154
+ When running Ruby scripts while dual booting two different Ruby versions, you have to remember to do two things simultaneously for every command:
155
+ - Run the command with the correct version of Ruby
156
+ - Add the DEPENDENCIES_NEXT environment variable to tell bundler to use `Gemfile_next.lock`
157
+
158
+ So to run a spec in both versions, the workflow would look like this (assuming chruby for version management):
159
+
160
+ ```sh
161
+ $ chruby 2.5.7
162
+ $ bundle exec rspec spec/some_spec.rb
163
+ $ chruby 2.6.5
164
+ $ DEPENDENCIES_NEXT=1 bundle exec rspec spec/some_spec.rb
165
+ ```
166
+
167
+ Perhaps more importantly, to update or install a gem, the workflow would look like this:
168
+
169
+ ```sh
170
+ # This will update Gemfile.lock and Gemfile_next.lock and install the gems
171
+ # specified in Gemfile.lock:
172
+ $ chruby 2.5.7
173
+ $ bundle update some_gem
174
+ # This will actually install the gems specified in Gemfile_next.lock under the
175
+ # correct Ruby installation:
176
+ $ chruby 2.6.5
177
+ $ DEPENDENCIES_NEXT=1 bundle install
178
+ ```
179
+
180
+ Configuration (Optional)
181
+ ------------------------
182
+ By default Bootboot will use the `DEPENDENCIES_NEXT` environment variable to update your Gemfile_next.lock. You can however configure it. For example, if you want the dualboot to happen when the `SHOPIFY_NEXT` env variable is present, you simply have to add this in your Gemfile:
183
+
184
+ ```ruby
185
+ # Gemfile
186
+ Bundler.settings.set_local('bootboot_env_prefix', 'SHOPIFY')
187
+ ```
188
+
189
+ Keep the `Gemfile_next.lock` in sync
60
190
  ------------
61
191
  When a developer bumps or adds a dependency, Bootboot will ensure that the `Gemfile_next.lock` snapshot gets updated.
62
192
 
63
193
  **However, this feature is only available if you are on Bundler `>= 1.17`**
64
194
  Other versions will trigger a warning message telling them that Bootboot can't automatically keep the `Gemfile_next.lock` in sync.
195
+
196
+ If you use the deployment flag (`bundle --deployment`) this plugin won't work on Bundler `<= 2.0.1`. Consider using this workaround in your Gemfile for these versions of Bundler:
197
+
198
+ ```ruby
199
+ plugin 'bootboot', '~> 0.1.2' unless Bundler.settings[:frozen]
200
+ ```
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bootboot/ruby_source"
4
+
3
5
  module DefinitionPatch
4
6
  def initialize(wrong_lock, *args)
5
- lockfile = if ENV['SKIP_BUNDLER_PATCH']
7
+ lockfile = if ENV["BOOTBOOT_UPDATING_ALTERNATE_LOCKFILE"]
6
8
  wrong_lock
7
9
  else
8
10
  Bootboot::GEMFILE_NEXT_LOCK
@@ -12,15 +14,48 @@ module DefinitionPatch
12
14
  end
13
15
  end
14
16
 
17
+ module RubyVersionPatch
18
+ def system
19
+ if ENV["BOOTBOOT_UPDATING_ALTERNATE_LOCKFILE"]
20
+ # If we're updating the alternate file and the ruby version specified in
21
+ # the Gemfile is different from the Ruby version currently running, we
22
+ # want to write the version specified in `Gemfile` for the current
23
+ # dependency set to the lock file
24
+ Bundler::Definition.build(Bootboot::GEMFILE, nil, false).ruby_version || super
25
+ else
26
+ super
27
+ end
28
+ end
29
+ end
30
+
31
+ module DefinitionSourceRequirementsPatch
32
+ def source_requirements
33
+ super.tap do |source_requirements|
34
+ # Bundler has a hard requirement that Ruby should be in the Metadata
35
+ # source, so this replaces Ruby's Metadata source with our custom source
36
+ source = Bootboot::RubySource.new({})
37
+ source_requirements[source.ruby_spec_name] = source
38
+ end
39
+ end
40
+ end
41
+
15
42
  module SharedHelpersPatch
16
43
  def default_lockfile
17
44
  Bootboot::GEMFILE_NEXT_LOCK
18
45
  end
19
46
  end
20
47
 
48
+ Bundler::Definition.prepend(DefinitionSourceRequirementsPatch)
49
+ Bundler::RubyVersion.singleton_class.prepend(RubyVersionPatch)
50
+
21
51
  Bundler::Dsl.class_eval do
22
52
  def enable_dual_booting
23
53
  Bundler::Definition.prepend(DefinitionPatch)
24
54
  Bundler::SharedHelpers.singleton_class.prepend(SharedHelpersPatch)
55
+ Bundler::Settings.prepend(Module.new do
56
+ def app_cache_path
57
+ "vendor/cache-next"
58
+ end
59
+ end)
25
60
  end
26
61
  end
@@ -1,27 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fileutils'
3
+ require "fileutils"
4
4
 
5
5
  module Bootboot
6
6
  class Command < Bundler::Plugin::API
7
7
  def setup
8
- self.class.command('bootboot')
8
+ self.class.command("bootboot")
9
9
  end
10
10
 
11
11
  def exec(_cmd, _args)
12
12
  FileUtils.cp(GEMFILE_LOCK, GEMFILE_NEXT_LOCK)
13
13
 
14
- File.open(GEMFILE, 'a+') do |f|
15
- f.write(<<-EOM)
16
- Plugin.send(:load_plugin, 'bootboot') if Plugin.installed?('bootboot')
14
+ File.open(GEMFILE, "a+") do |f|
15
+ f.write(<<~EOM)
16
+ Plugin.send(:load_plugin, 'bootboot') if Plugin.installed?('bootboot')
17
17
 
18
- if ENV['DEPENDENCIES_NEXT']
19
- enable_dual_booting if Plugin.installed?('bootboot')
18
+ if ENV['#{Bootboot.env_next}']
19
+ enable_dual_booting if Plugin.installed?('bootboot')
20
20
 
21
- # Add any gem you want here, they will be loaded only when running
22
- # bundler command prefixed with `#{DUALBOOT_NEXT}=1`.
23
- end
24
- EOM
21
+ # Add any gem you want here, they will be loaded only when running
22
+ # bundler command prefixed with `#{Bootboot.env_next}=1`.
23
+ end
24
+ EOM
25
25
  end
26
26
  end
27
27
  end
@@ -23,7 +23,7 @@ module Bootboot
23
23
  end
24
24
 
25
25
  def opt_in
26
- self.class.hook('before-install-all') do
26
+ self.class.hook("before-install-all") do
27
27
  @previous_lock = Bundler.default_lockfile.read
28
28
  end
29
29
 
@@ -31,9 +31,9 @@ module Bootboot
31
31
  current_definition = Bundler.definition
32
32
 
33
33
  next if !GEMFILE_NEXT_LOCK.exist? ||
34
- nothing_changed?(current_definition) ||
35
- ENV[DUALBOOT_NEXT] ||
36
- ENV[DUALBOOT_PREVIOUS]
34
+ nothing_changed?(current_definition) ||
35
+ ENV[Bootboot.env_next] ||
36
+ ENV[Bootboot.env_previous]
37
37
 
38
38
  update!(current_definition)
39
39
  end
@@ -48,8 +48,8 @@ module Bootboot
48
48
  lock = which_lock
49
49
 
50
50
  Bundler.ui.confirm("Updating the #{lock}")
51
- ENV[env] = '1'
52
- ENV['SKIP_BUNDLER_PATCH'] = '1'
51
+ ENV[env] = "1"
52
+ ENV["BOOTBOOT_UPDATING_ALTERNATE_LOCKFILE"] = "1"
53
53
 
54
54
  unlock = current_definition.instance_variable_get(:@unlock)
55
55
  definition = Bundler::Definition.build(GEMFILE, lock, unlock)
@@ -57,14 +57,14 @@ module Bootboot
57
57
  definition.lock(lock)
58
58
  ensure
59
59
  ENV.delete(env)
60
- ENV.delete('SKIP_BUNDLER_PATCH')
60
+ ENV.delete("BOOTBOOT_UPDATING_ALTERNATE_LOCKFILE")
61
61
  end
62
62
 
63
63
  def which_env
64
64
  if Bundler.default_lockfile.to_s =~ /_next\.lock/
65
- DUALBOOT_PREVIOUS
65
+ Bootboot.env_previous
66
66
  else
67
- DUALBOOT_NEXT
67
+ Bootboot.env_next
68
68
  end
69
69
  end
70
70
 
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bootboot
4
+ class RubySource
5
+ include Bundler::Plugin::API::Source
6
+
7
+ # The spec name for Ruby changed from "ruby\0" to "Ruby\0" between Bundler
8
+ # 1.17 and 2.0, so we want to use the Ruby spec name from Metadata so
9
+ # Bootboot works across Bundler versions
10
+ def ruby_spec_name
11
+ @ruby_spec_name ||= begin
12
+ metadata = Bundler::Source::Metadata.new
13
+ ruby_spec = metadata.specs.find { |s| s.name[/[R|r]uby\0/] }
14
+ # Default to Bundler > 2 in case the Bundler internals change
15
+ ruby_spec ? ruby_spec.name : "Ruby\0"
16
+ end
17
+ end
18
+
19
+ def specs
20
+ Bundler::Index.build do |idx|
21
+ # If the ruby version specified in the Gemfile is different from the
22
+ # Ruby version currently running, we want to build a definition without
23
+ # a lockfile (so that `ruby_version` in the Gemfile isn't overridden by
24
+ # the lockfile) and get its `ruby_version`. This will be used both
25
+ # during dependency resolution so that we can pretend the intended Ruby
26
+ # version is present, as well as when updating the lockfile itself.
27
+ ruby_version = Bundler::Definition.build(Bootboot::GEMFILE, nil, false).ruby_version
28
+ ruby_version ||= Bundler::RubyVersion.system
29
+ ruby_spec = Gem::Specification.new(ruby_spec_name, ruby_version.gem_version)
30
+ ruby_spec.source = self
31
+ idx << ruby_spec
32
+ end
33
+ end
34
+
35
+ def to_s
36
+ "Bootboot plugin Ruby source"
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bootboot
2
- VERSION = "0.1.1"
4
+ VERSION = "0.2.1"
3
5
  end
data/lib/bootboot.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bootboot/version"
2
4
  require "bootboot/bundler_patch"
3
5
 
@@ -5,11 +7,25 @@ module Bootboot
5
7
  GEMFILE = Bundler.default_gemfile
6
8
  GEMFILE_LOCK = Pathname("#{GEMFILE}.lock")
7
9
  GEMFILE_NEXT_LOCK = Pathname("#{GEMFILE}_next.lock")
8
- DUALBOOT_NEXT = 'DEPENDENCIES_NEXT'
9
- DUALBOOT_PREVIOUS = 'DEPENDENCIES_PREVIOUS'
10
10
 
11
- autoload :GemfileNextAutoSync, 'bootboot/gemfile_next_auto_sync'
12
- autoload :Command, 'bootboot/command'
11
+ autoload :GemfileNextAutoSync, "bootboot/gemfile_next_auto_sync"
12
+ autoload :Command, "bootboot/command"
13
+
14
+ class << self
15
+ def env_next
16
+ env_prefix + "_NEXT"
17
+ end
18
+
19
+ def env_previous
20
+ env_prefix + "_PREVIOUS"
21
+ end
22
+
23
+ private
24
+
25
+ def env_prefix
26
+ Bundler.settings["bootboot_env_prefix"] || "DEPENDENCIES"
27
+ end
28
+ end
13
29
  end
14
30
 
15
31
  Bootboot::GemfileNextAutoSync.new.setup
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootboot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-20 00:00:00.000000000 Z
11
+ date: 2022-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: minitest
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: '5.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.17'
26
+ version: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,46 +38,27 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
- - !ruby/object:Gem::Dependency
42
- name: minitest
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '5.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '5.0'
55
- description: " This gems removes you the overhead of monkeypatching your Gemfile in
56
- order to dualboot your app using the Gemfile_next lock strategy It also ensure that
57
- dependencies in the Gemfile lock and Gemfile_next lock are in sync whenever someone
58
- updates a gem "
41
+ description: " This gem remove the overhead of monkeypatching your Gemfile in order
42
+ to dualboot your app using the Gemfile_next lock strategy It also ensure that dependencies
43
+ in the Gemfile lock and Gemfile_next lock are in sync whenever someone updates a
44
+ gem "
59
45
  email:
60
46
  - rails@shopify.com
61
47
  executables: []
62
48
  extensions: []
63
- extra_rdoc_files: []
49
+ extra_rdoc_files:
50
+ - LICENSE.txt
51
+ - README.md
64
52
  files:
65
- - ".gitignore"
66
- - ".travis.yml"
67
- - Gemfile
68
- - Gemfile.lock
69
53
  - LICENSE.txt
70
54
  - README.md
71
- - Rakefile
72
- - bin/console
73
- - bootboot.gemspec
74
55
  - lib/bootboot.rb
75
56
  - lib/bootboot/bundler_patch.rb
76
57
  - lib/bootboot/command.rb
77
58
  - lib/bootboot/gemfile_next_auto_sync.rb
59
+ - lib/bootboot/ruby_source.rb
78
60
  - lib/bootboot/version.rb
79
61
  - plugins.rb
80
- - shipit.rubygems.yml
81
62
  homepage: https://github.com/shopify/bootboot
82
63
  licenses:
83
64
  - MIT
@@ -85,6 +66,7 @@ metadata:
85
66
  homepage_uri: https://github.com/shopify/bootboot
86
67
  source_code_uri: https://github.com/shopify/bootboot
87
68
  changelog_uri: https://github.com/Shopify/bootboot/blob/master/CHANGELOG.md
69
+ allowed_push_host: https://rubygems.org
88
70
  post_install_message:
89
71
  rdoc_options: []
90
72
  require_paths:
@@ -100,8 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
82
  - !ruby/object:Gem::Version
101
83
  version: '0'
102
84
  requirements: []
103
- rubyforge_project:
104
- rubygems_version: 2.6.14
85
+ rubygems_version: 3.2.20
105
86
  signing_key:
106
87
  specification_version: 4
107
88
  summary: Dualbooting your ruby app made easy.
data/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- sudo: false
2
- cache: bundler
3
- language: ruby
4
- before_install:
5
- - gem update bundler
6
- notifications:
7
- email: false
data/Gemfile DELETED
@@ -1,10 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
- gemspec
6
-
7
- group :deployment do
8
- gem 'package_cloud'
9
- gem 'rake'
10
- end
data/Gemfile.lock DELETED
@@ -1,49 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- bootboot (0.1.1)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- domain_name (0.5.20180417)
10
- unf (>= 0.0.5, < 1.0.0)
11
- highline (1.6.20)
12
- http-cookie (1.0.3)
13
- domain_name (~> 0.5)
14
- json_pure (1.8.1)
15
- mime-types (3.2.2)
16
- mime-types-data (~> 3.2015)
17
- mime-types-data (3.2018.0812)
18
- minitest (5.11.3)
19
- netrc (0.11.0)
20
- package_cloud (0.3.05)
21
- highline (= 1.6.20)
22
- json_pure (= 1.8.1)
23
- rainbow (= 2.2.2)
24
- rest-client (~> 2.0)
25
- thor (~> 0.18)
26
- rainbow (2.2.2)
27
- rake
28
- rake (10.5.0)
29
- rest-client (2.0.2)
30
- http-cookie (>= 1.0.2, < 2.0)
31
- mime-types (>= 1.16, < 4.0)
32
- netrc (~> 0.8)
33
- thor (0.20.3)
34
- unf (0.1.4)
35
- unf_ext
36
- unf_ext (0.0.7.5)
37
-
38
- PLATFORMS
39
- ruby
40
-
41
- DEPENDENCIES
42
- bootboot!
43
- bundler (~> 1.17)
44
- minitest (~> 5.0)
45
- package_cloud
46
- rake
47
-
48
- BUNDLED WITH
49
- 1.17.1
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/*_test.rb"]
8
- end
9
-
10
- task :default => :test
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "bootboot"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bootboot.gemspec DELETED
@@ -1,33 +0,0 @@
1
- lib = File.expand_path("../lib", __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "bootboot/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "bootboot"
7
- spec.version = Bootboot::VERSION
8
- spec.authors = ["Shopify"]
9
- spec.email = ["rails@shopify.com"]
10
-
11
- spec.summary = "Dualbooting your ruby app made easy."
12
- spec.description = <<-EOM.gsub(/\W+/, ' ')
13
- This gems removes you the overhead of monkeypatching your Gemfile in order to
14
- dualboot your app using the Gemfile_next.lock strategy.
15
- It also ensure that dependencies in the Gemfile.lock and Gemfile_next.lock are
16
- in sync whenever someone updates a gem.
17
- EOM
18
- spec.homepage = "https://github.com/shopify/bootboot"
19
- spec.license = "MIT"
20
-
21
- spec.metadata["homepage_uri"] = spec.homepage
22
- spec.metadata["source_code_uri"] = "https://github.com/shopify/bootboot"
23
- spec.metadata["changelog_uri"] = "https://github.com/Shopify/bootboot/blob/master/CHANGELOG.md"
24
-
25
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
26
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
- end
28
- spec.require_paths = ["lib"]
29
-
30
- spec.add_development_dependency "bundler", "~> 1.17"
31
- spec.add_development_dependency "rake", "~> 10.0"
32
- spec.add_development_dependency "minitest", "~> 5.0"
33
- end
data/shipit.rubygems.yml DELETED
@@ -1 +0,0 @@
1
- # Default config