pry-try 0.1.3 → 0.2.0

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
2
  SHA1:
3
- metadata.gz: a2f56fc3f70ef4426ab1dde7d8a0218a3146592a
4
- data.tar.gz: 2e716815a79cbd1c01d4fc7ddbac1eb2b3222a89
3
+ metadata.gz: 9be4107b9a3260e37eab98cd327a3ce9cd76133c
4
+ data.tar.gz: ecb09c7a053714d9ecdb747ea6d9de8b52c9fa65
5
5
  SHA512:
6
- metadata.gz: fda7f1c016866b6671af6b28edc2a8d9b858a7a540d52c2844eee99453d4177b22ccf4e0ae105b4784974cedc792cc1e31f5569108cb3ca5139d7defaeebd8d1
7
- data.tar.gz: 93bd48f95adb9f4f1daa104877688f0b62c19b7b2e1cd39884fdc8854740c0090c7c930e8177ef38623b160456bf19c7255209dfe27aec877b4bf71cbd21b6f5
6
+ metadata.gz: a493f0705ccdeadf414858b67727abcf293c5b627eb40d6f3edb29fd907c6bf5357b24f1ea0c85817aca04d1c22d551c3b3674cef504b0ae5c1a2e3750e5172a
7
+ data.tar.gz: b043e9a41d84205dca42dfe001946af3817fe591cfe07cc27a23cabb4f22abfe10ea9d00401bb5ff6cc67dba190904f06e34f1cc4bd4f3c8fa9f00fc47225f6c
data/README.md CHANGED
@@ -1,17 +1,18 @@
1
1
  # pry-try
2
2
 
3
- *Note* This gem is currently mostly README-ware.
3
+ Open a pry-session with the gems you want to try.
4
4
 
5
5
  ## Usage
6
6
 
7
- This gem should support the following usecases:
7
+ This gem should supports the following usecases:
8
8
 
9
9
  ### pipe-in a script
10
10
 
11
11
  ```bash
12
- # piped-in content is evaluated after which a repl opens:
12
+ # piped-in content is evaluated in a new pry-session:
13
13
  $ echo '@a = 1' | pry-try
14
14
  [1] pry(main)> @a =1
15
+ 1
15
16
  [2] pry(main)>
16
17
 
17
18
  # handy to share scripts with others:
@@ -20,32 +21,45 @@ $ curl <path-to-raw-gist> | pry-try
20
21
 
21
22
  ### try a gem
22
23
 
24
+ Start a new pry-session with the requested gems loaded:
25
+
23
26
  ```bash
24
27
  $ pry-try activesupport
25
- Fetching gem metadata from https://rubygems.org/..............
28
+ Fetching gem metadata from https://rubygems.org/.........
26
29
  Fetching version metadata from https://rubygems.org/.
27
30
  Resolving dependencies...
28
31
  Using concurrent-ruby 1.0.5
29
32
  Using i18n 0.8.1
30
33
  Using minitest 5.10.1
31
34
  Using thread_safe 0.3.6
35
+ Using coderay 1.1.1
36
+ Using method_source 0.8.2
37
+ Using slop 3.6.0
32
38
  Using bundler 1.14.5
33
39
  Using tzinfo 1.2.2
40
+ Using pry 0.10.4
34
41
  Using activesupport 5.0.2
35
- => [Gem::Dependency.new("activesupport", Gem::Requirement.new([">= 0"]), :runtime)]
36
42
  [2] pry(main)> 1.second
37
43
  => 1 second
38
44
  ```
39
45
 
46
+ Request a specific version, like you would do in a Gemfile:
47
+ ```bash
48
+ $ pry-try activesupport '~>4.2'
49
+ # or multiple gems:
50
+ $ pry-try activesupport '~>4.2' redis
51
+ ```
52
+
40
53
  ### try a gem within a pry-session
41
54
 
42
55
  ```bash
43
56
  # given
44
57
  $ pry
45
- [1] pry(main)> try 'activesupport'
58
+ [1] pry(main)> .pry-try 'activesupport'
46
59
  ...
47
60
  [2] pry(main)> 1.second
48
61
  => 1 second
62
+ # ^D lets you return to the original pry-session
49
63
  ```
50
64
 
51
65
 
data/exe/pry-try CHANGED
@@ -1,7 +1,48 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ VERSION_LIKE_RE = [Gem::Requirement::PATTERN, /v?\d+\.\d+/, /^\h+$/].freeze
4
+
5
+ def parse_args(args)
6
+ args.each_with_object([]) do |arg, obj|
7
+ matches_arg = arg.method(:match).to_proc
8
+ if VERSION_LIKE_RE.detect(&matches_arg)
9
+ obj[-1] << arg
10
+ else
11
+ obj << [arg]
12
+ end
13
+ end
14
+ end
15
+
16
+ REQUIREMENTS = {
17
+ 'rails' => %w(rails/all active_support/all),
18
+ 'activerecord' => %w(active_record),
19
+ 'activesupport' => %w(active_support/all),
20
+ }.freeze
21
+
22
+ gems = parse_args(ARGV).map do |gem|
23
+ if r = REQUIREMENTS[gem.first]
24
+ gem << {:require => r}
25
+ else
26
+ gem
27
+ end
28
+ end
29
+
3
30
  if $stdin.tty?
4
- puts "Some argument crunching..."
31
+ require 'tempfile'
32
+ require 'yaml'
33
+ script = Tempfile.new.tap do |f|
34
+ File.write(f, <<CODEZ.gsub(/\n+ *(?=\S)/, ';'))
35
+ require 'bundler/inline'
36
+
37
+ gemfile(true) do
38
+ source 'https://rubygems.org'
39
+ gem 'pry'
40
+ YAML.load(#{YAML.dump(gems).inspect}).each {|gargs| gem(*gargs) }
41
+ end
42
+ $stdin = $stdin.reopen '/dev/tty';
43
+ CODEZ
44
+ end
45
+ exec %{cat #{script.path} | pry}
5
46
  else
6
- exec %{script=`cat;echo; echo '$stdin = $stdin.reopen "/dev/tty";'`; printf "${script}" | pry}
47
+ exec %{script=$(cat;echo; echo '$stdin = $stdin.reopen "/dev/tty";'); printf "${script}" | pry}
7
48
  end
@@ -1,3 +1,3 @@
1
1
  module PryTry
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
data/pry-try.gemspec CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
+ spec.add_dependency "pry", "~>0.10"
24
25
  spec.add_development_dependency "bundler", "~> 1.14"
25
26
  spec.add_development_dependency "rake", "~> 10.0"
26
27
  spec.add_development_dependency "rspec", "~> 3.0"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-try
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gert Goet
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-06 00:00:00.000000000 Z
11
+ date: 2017-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.10'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.10'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement