require 0.2.0 → 0.2.1
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/README.markdown +40 -3
- data/lib/require.rb +19 -19
- data/require.rb +1 -1
- metadata +1 -1
data/README.markdown
CHANGED
@@ -46,9 +46,46 @@ require File.expand_path("#{File.dirname(__FILE_)}/../require")
|
|
46
46
|
Require.lib!
|
47
47
|
</pre>
|
48
48
|
|
49
|
-
What does <code>Require.lib!</code> do?
|
50
|
-
|
51
49
|
* Activates sinatra and haml gems
|
52
50
|
* Requires sinatra, haml, and sass
|
53
51
|
* Adds vendor/authlogic/lib to the load paths
|
54
|
-
* Requires authlogic
|
52
|
+
* Requires authlogic
|
53
|
+
|
54
|
+
Gemspec
|
55
|
+
-------
|
56
|
+
|
57
|
+
You can also use <code>Require</code> to generate a <code>Gem::Specification</code> instance.
|
58
|
+
|
59
|
+
<pre>
|
60
|
+
require 'rubygems'
|
61
|
+
gem 'require'
|
62
|
+
require 'require'
|
63
|
+
|
64
|
+
Require do
|
65
|
+
|
66
|
+
gem(:sinatra, '=0.9.4') { require 'sinatra/base' }
|
67
|
+
|
68
|
+
gemspec do
|
69
|
+
author 'Your Name'
|
70
|
+
dependencies do
|
71
|
+
gem :sinatra
|
72
|
+
end
|
73
|
+
email 'your@email.com'
|
74
|
+
name 'my_project'
|
75
|
+
homepage "http://github.com/your_name/#{name}"
|
76
|
+
summary ""
|
77
|
+
version '0.1.0'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
</pre>
|
81
|
+
|
82
|
+
Then use it in your <code>rakefile</code>:
|
83
|
+
|
84
|
+
<pre>
|
85
|
+
require File.dirname(__FILE_) + "/require"
|
86
|
+
|
87
|
+
desc "Package gem"
|
88
|
+
Rake::GemPackageTask.new(Require.gemspec) do |pkg|
|
89
|
+
pkg.gem_spec = Require.gemspec
|
90
|
+
end
|
91
|
+
</pre>
|
data/lib/require.rb
CHANGED
@@ -13,12 +13,12 @@ class Require
|
|
13
13
|
dsl.all *args
|
14
14
|
end
|
15
15
|
|
16
|
-
def call(&block)
|
17
|
-
dsl(
|
16
|
+
def call(force_root=nil, &block)
|
17
|
+
dsl(force_root).call &block
|
18
18
|
end
|
19
19
|
|
20
|
-
def dsl(
|
21
|
-
@dsl[root(
|
20
|
+
def dsl(force_root=nil)
|
21
|
+
@dsl[root(force_root)] ||= Dsl.new
|
22
22
|
end
|
23
23
|
|
24
24
|
def get(*args)
|
@@ -71,28 +71,28 @@ class Require
|
|
71
71
|
|
72
72
|
def reset(&block)
|
73
73
|
@dsl = {}
|
74
|
-
call &block
|
74
|
+
call caller[0], &block
|
75
75
|
end
|
76
76
|
|
77
|
-
def root(force=
|
78
|
-
paths = caller.collect do |p|
|
79
|
-
File.expand_path(p.split(':').first)
|
80
|
-
end
|
81
|
-
path = paths.detect do |p|
|
82
|
-
!p.index(/\/require[-\.\d]*\/lib\//) &&
|
83
|
-
!p.include?('/rubygems/specification.rb') &&
|
84
|
-
!p.include?('/lib/rake/') &&
|
85
|
-
!p.include?('/lib/spec/')
|
86
|
-
end
|
87
|
-
paths = @dsl.keys.sort { |a,b| b.length <=> a.length }
|
77
|
+
def root(force=nil)
|
88
78
|
if force
|
89
|
-
|
79
|
+
return clean_caller(force)
|
90
80
|
else
|
91
|
-
|
81
|
+
roots = @dsl.keys.sort { |a,b| b.length <=> a.length }
|
82
|
+
root = roots.detect do |r|
|
83
|
+
caller.detect do |c|
|
84
|
+
clean_caller(c)[0..r.length-1] == r
|
85
|
+
end
|
86
|
+
end
|
87
|
+
root ? root : raise("You have not executed a Require block (Require not configured)")
|
92
88
|
end
|
93
89
|
end
|
94
90
|
|
95
91
|
private
|
92
|
+
|
93
|
+
def clean_caller(string)
|
94
|
+
File.dirname(File.expand_path(string.split(':').first))
|
95
|
+
end
|
96
96
|
|
97
97
|
def dir_exists?(path)
|
98
98
|
File.exists?(path) && File.directory?(path)
|
@@ -134,5 +134,5 @@ class Require
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def Require(&block)
|
137
|
-
Require.call &block
|
137
|
+
Require.call caller[0], &block
|
138
138
|
end
|
data/require.rb
CHANGED