rbx-require-relative 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog ADDED
@@ -0,0 +1,34 @@
1
+ 2010-09-20 rocky <rockyb@rubyforge.org>
2
+
3
+ * lib/version.rb: Set version number back to what it was
4
+
5
+ 2010-09-20 rocky <rockyb@rubyforge.org>
6
+
7
+ * Rakefile, lib/require_relative.rb, test/test-rr.rb:
8
+ require_relative: Add RequireRelative::abs_file which is like
9
+ __FILE__ but gives the absolute location. Rakefile: Had broken
10
+ tests because rake's default mechanism appears to be broken here and
11
+ I don't know why. test-rr.rb: Reinstate more stringent testing -
12
+ chdir before require_relative
13
+
14
+ 2010-09-20 rocky <rockyb@rubyforge.org>
15
+
16
+ * .gemspec, Makefile, Rakefile, lib/.gitignore, lib/Makefile,
17
+ lib/version.rb: Administrivia: Add packaging, a .gemspec, make
18
+ comptaibility and so on.
19
+
20
+ 2010-09-19 rocky <rockyb@rubyforge.org>
21
+
22
+ * ChangeLog, Rakefile, lib/require_relative.rb,
23
+ require_relative.rb, test/test-rr.rb: Gem packaging - this time, for
24
+ sure!
25
+
26
+ 2010-09-18 rocky <rockyb@rubyforge.org>
27
+
28
+ * .gitignore, ChangeLog, README.textile, Rakefile: Bang on Rakefile
29
+ for testing packaging and installing.
30
+
31
+ 2010-09-18 rvm <rocky-rvm@static-71-183-236-17.nycmny.fios.verizon.net>
32
+
33
+ * Initial require_relative code.
34
+
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (C) 2010 Rocky Bernstein <rockyb@rubyforge.org>
2
+ All rights reserved.
3
+ *
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions
6
+ are met:
7
+ 1. Redistributions of source code must retain the above copyright
8
+ notice, this list of conditions and the following disclaimer.
9
+ 2. Redistributions in binary form must reproduce the above copyright
10
+ notice, this list of conditions and the following disclaimer in the
11
+ documentation and/or other materials provided with the distribution.
12
+ *
13
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
14
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
17
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23
+ SUCH DAMAGE.
data/NEWS ADDED
@@ -0,0 +1,3 @@
1
+ 0.0.2 (09-22-10)
2
+
3
+ First public release.
data/README.textile ADDED
@@ -0,0 +1,13 @@
1
+ h2. Ruby 1.9's relative_relative for Rubinus 1.0.1 .. 1.1
2
+
3
+ Here we add in Module RequireRelative method: *require_relative*, and *abs_file*. Example:
4
+
5
+ bc. require 'rubygems'; require 'require_relative'
6
+ require_relative './lib/foo'
7
+ absolute_path = RequireRelative.abs_file
8
+
9
+ But why *abs_file*? Well, recall that ==__FILE__== does not give an absolute path. So if you have chdir'd before using ==__FILE__==, you might not be able to retrieve the full path.
10
+
11
+ The latest version is at "http://github.com/rocky/rbx-require-relative/"://github.com/rocky/rbx-require-relative/
12
+
13
+
data/Rakefile ADDED
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env rake
2
+ # -*- Ruby -*-
3
+ # Are we rubinius? We'll test by checking the specific function we need.
4
+ raise RuntimeError, 'This package is for rubinius only!' unless
5
+ Object.constants.include?('Rubinius') &&
6
+ Rubinius.constants.include?('VM') &&
7
+ Rubinius::VM.respond_to?(:backtrace)
8
+
9
+ require 'rubygems'
10
+ require 'rake/gempackagetask'
11
+ require 'rake/rdoctask'
12
+ require 'rake/testtask'
13
+ require 'fileutils'
14
+
15
+ ROOT_DIR = File.dirname(__FILE__)
16
+ require File.join(ROOT_DIR, '/lib/version')
17
+
18
+ def gemspec
19
+ @gemspec ||= eval(File.read('.gemspec'), binding, '.gemspec')
20
+ end
21
+
22
+ desc "Build the gem"
23
+ task :package=>:gem
24
+ task :gem=>:gemspec do
25
+ sh "gem build .gemspec"
26
+ FileUtils.mkdir_p 'pkg'
27
+ FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", 'pkg'
28
+ end
29
+
30
+ task :default => [:test]
31
+
32
+ desc 'Install locally'
33
+ task :install => :package do
34
+ Dir.chdir(ROOT_DIR) do
35
+ sh %{gem install --local pkg/#{gemspec.name}-#{gemspec.version}}
36
+ end
37
+ end
38
+
39
+ desc 'Test everything.'
40
+ Rake::TestTask.new(:test) do |t|
41
+ t.libs << './lib'
42
+ t.pattern = 'test/test-*.rb'
43
+ t.verbose = true
44
+ end
45
+ task :test => [:lib]
46
+
47
+ require 'rbconfig'
48
+ RUBY_PATH = File.join(RbConfig::CONFIG['bindir'],
49
+ RbConfig::CONFIG['RUBY_INSTALL_NAME'])
50
+
51
+ def run_standalone_ruby_file(directory)
52
+ # puts ('*' * 10) + ' ' + directory + ' ' + ('*' * 10)
53
+ Dir.chdir(directory) do
54
+ Dir.glob('test-rr.rb').each do |ruby_file|
55
+ # puts( ('-' * 20) + ' ' + ruby_file + ' ' + ('-' * 20))
56
+ system(RUBY_PATH, ruby_file)
57
+ end
58
+ end
59
+ end
60
+
61
+
62
+ desc "Run each library Ruby file in standalone mode."
63
+ rake_dir = File.dirname(__FILE__)
64
+ task :check do
65
+ run_standalone_ruby_file(File.join(%W(#{rake_dir} test)))
66
+ end
67
+ task :default => [:check]
68
+
69
+ # Remove the above when I figure out what's up with the commented-out code.
70
+
71
+ desc 'Create a GNU-style ChangeLog via git2cl'
72
+ task :ChangeLog do
73
+ system('git log --pretty --numstat --summary | git2cl > ChangeLog')
74
+ end
75
+
76
+ desc "Remove built files"
77
+ task :clean => [:clobber_package, :clobber_rdoc]
78
+
79
+ desc "Generate the gemspec"
80
+ task :generate do
81
+ puts gemspec.to_ruby
82
+ end
83
+
84
+ desc "Validate the gemspec"
85
+ task :gemspec do
86
+ gemspec.validate
87
+ end
88
+
89
+ task :clobber_package do
90
+ FileUtils.rm_rf File.join(ROOT_DIR, 'pkg')
91
+ end
92
+
93
+ task :clobber_rdoc do
94
+ FileUtils.rm_rf File.join(ROOT_DIR, 'doc')
95
+ end
@@ -0,0 +1,36 @@
1
+ # Ruby 1.9's require_relative.
2
+ module RequireRelative
3
+ def abs_file
4
+ Rubinius::VM.backtrace(1)[0].method.scope.data_path
5
+ end
6
+ module_function :abs_file
7
+ end
8
+
9
+ module Kernel
10
+ def require_relative(suffix)
11
+ # Rubinius::Location#file stores relative file names while
12
+ # Rubinius::Location#scope.data store the absolute file name. It
13
+ # is possible (hopeful even) that in the future that Rubinius will
14
+ # change the API to be more intuitive. When that occurs, I'll
15
+ # change the below to that simpler thing.
16
+ dir = File.dirname(Rubinius::VM.backtrace(1)[0].
17
+ method.scope.data_path)
18
+ require File.join(dir, suffix)
19
+ end
20
+ end
21
+
22
+ # demo
23
+ if __FILE__ == $0
24
+ file = RequireRelative.abs_file
25
+ puts file
26
+ require 'tmpdir'
27
+ Dir.chdir(Dir.tmpdir) do
28
+ rel_file = File.basename(file)
29
+ cur_dir = File.basename(File.dirname(file))
30
+ ['./', "../#{cur_dir}/"].each do |prefix|
31
+ test = "#{prefix}#{rel_file}"
32
+ puts "#{test}: #{require_relative test}"
33
+ puts "#{test}: #{require_relative test} -- should be false"
34
+ end
35
+ end
36
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module RequireRelative
2
+ VERSION = '0.0.2'
3
+ end
data/test/bar.rb ADDED
@@ -0,0 +1,3 @@
1
+ # Just something else to try require_relative on.
2
+ class Bar
3
+ end
data/test/foo.rb ADDED
@@ -0,0 +1,3 @@
1
+ # Just something to try require_relative on.
2
+ class Foo
3
+ end
data/test/test-rr.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'test/unit'
2
+
3
+ # require_relative the old-fashioned way...
4
+ # Note that it's important there be no chdir before this require.
5
+ file = File.expand_path(File.join(File.dirname(__FILE__),
6
+ '../lib/require_relative'))
7
+ require file
8
+
9
+ class TestRR < Test::Unit::TestCase
10
+ require 'tmpdir'
11
+ def test_basic
12
+ # The chdir is to make things harder.
13
+ abs_file = RequireRelative.abs_file
14
+ Dir.chdir(Dir.tmpdir) do
15
+ cur_dir = File.basename(File.expand_path(File.dirname(abs_file)))
16
+ ['./foo', "../#{cur_dir}/bar"].each_with_index do |suffix, i|
17
+ assert_equal(true, require_relative(suffix),
18
+ "check require_relative(#{suffix})")
19
+ # Check that the require_relative worked by checking to see of the
20
+ # class from each file was imported.
21
+ assert_equal(Class, (0 == i ? Foo : Bar).class)
22
+ assert_equal(false, require_relative(suffix),
23
+ "require_relative(#{suffix}) second time should be false")
24
+ end
25
+ end
26
+ end
27
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rbx-require-relative
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
11
+ platform: ruby
12
+ authors:
13
+ - R. Bernstein
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-22 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: |
23
+
24
+ Ruby 1.9's require_relative for Rubinius
25
+
26
+ email: rockyb@rubyforge.net
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files: []
32
+
33
+ files:
34
+ - LICENSE
35
+ - ChangeLog
36
+ - NEWS
37
+ - README.textile
38
+ - Rakefile
39
+ - lib/version.rb
40
+ - lib/require_relative.rb
41
+ - test/test-rr.rb
42
+ - test/foo.rb
43
+ - test/bar.rb
44
+ has_rdoc: true
45
+ homepage: http://github.com/rocky/rbx-require-relative
46
+ licenses:
47
+ - MIT
48
+ post_install_message:
49
+ rdoc_options:
50
+ - --main
51
+ - README
52
+ - --title
53
+ - require_relative 0.0.2 Documentation
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ hash: 57
62
+ segments:
63
+ - 1
64
+ - 8
65
+ - 7
66
+ version: 1.8.7
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ requirements: []
77
+
78
+ rubyforge_project:
79
+ rubygems_version: 1.3.6
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: Ruby 1.9's require_relative for Rubinius
83
+ test_files: []
84
+