faster_gem_script 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
File without changes
@@ -0,0 +1,8 @@
1
+ require 'sane'
2
+ require_rel '../lib/faster_gem_scripts'
3
+ if ARGV.length == 0 || ARGV[0] == '-h' || ARGV[0] == '--help'
4
+ puts "syntax: gem binary, like bin/abc (no .rb)"
5
+ exit
6
+ end
7
+
8
+ FasterGemScripts.overwrite ARGV[0]
@@ -0,0 +1,11 @@
1
+ require 'sane'
2
+
3
+ class FasterGemScripts
4
+ def self.overwrite full_path
5
+ contents_should_be = File.read __dir__ + '/template'
6
+ File.write(full_path, contents_should_be)
7
+ bin_loc = full_path + '_bin_location'
8
+ File.delete(bin_loc) if File.exist?(bin_loc)
9
+ end
10
+
11
+ end
data/lib/template ADDED
@@ -0,0 +1,27 @@
1
+ gem_name = File.basename(__FILE__)
2
+
3
+ if ARGV.first =~ /^_(.*)_$/
4
+ # special version of the gem--we'll need full rubygems for this
5
+ require 'rubygems'
6
+ if Gem::Version.correct? $1 then
7
+ version = $1
8
+ ARGV.shift
9
+ gem gem_name, version
10
+ load Gem.bin_path(gem_name, gem_name, version)
11
+ exit
12
+ end
13
+ end
14
+
15
+ cached = File.dirname(__FILE__) + "/#{gem_name}_bin_location"
16
+
17
+ # if we haven't cached its location yet...
18
+ unless File.exist? cached
19
+ File.open(cached, 'w') do |f|
20
+ require 'rubygems'
21
+ f.write Gem.bin_path(gem_name, gem_name, ">= 0")
22
+ end
23
+ end
24
+
25
+ require 'faster_rubygems' if RUBY_VERSION < '1.9' # gem prelude equivalent
26
+
27
+ load File.read(cached)
data/spec/spec.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'sane'
2
+ require_rel '../lib/faster_gem_scripts'
3
+ require 'spec/autorun'
4
+
5
+ describe "rewriter" do
6
+
7
+ def setup
8
+ File.delete 'abc' if File.exist?('abc')
9
+ FasterGemScripts.overwrite 'abc'
10
+ end
11
+
12
+ it "should overwrite a file" do
13
+ setup
14
+ new_contents = File.read('abc')
15
+ assert new_contents.contain?("faster_rubygems")
16
+ end
17
+
18
+ it "should nuke the cache on write" do
19
+ require 'fileutils'
20
+ FileUtils.touch 'abc_bin_location'
21
+ setup
22
+ assert !File.exist?('abc_bin_location')
23
+ end
24
+
25
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: faster_gem_script
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Roger Pack
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-12-28 00:00:00 -07:00
13
+ default_executable: faster_gem_script
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: sane
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ description:
36
+ email: rogerdpack@gmail.com
37
+ executables:
38
+ - faster_gem_script
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - README
43
+ files:
44
+ - lib/faster_gem_scripts.rb
45
+ - lib/template
46
+ - README
47
+ has_rdoc: true
48
+ homepage: http://github.com/rdp/faster_gem_scripts
49
+ licenses: []
50
+
51
+ post_install_message:
52
+ rdoc_options:
53
+ - --charset=UTF-8
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: "0"
61
+ version:
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ version:
68
+ requirements: []
69
+
70
+ rubyforge_project:
71
+ rubygems_version: 1.3.5
72
+ signing_key:
73
+ specification_version: 3
74
+ summary: A utility to make ruby "command line scripts" run much faster by using gem prelude instead of full rubygems
75
+ test_files:
76
+ - spec/spec.rb