jbundle 0.1.2 → 0.1.3
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/Gemfile.lock +1 -1
- data/lib/jbundle.rb +6 -2
- data/lib/jbundle/builder.rb +5 -1
- data/lib/jbundle/command_line.rb +2 -3
- data/lib/jbundle/server.rb +4 -1
- data/lib/jbundle/version.rb +1 -1
- data/spec/server_spec.rb +43 -23
- metadata +2 -2
data/Gemfile.lock
CHANGED
data/lib/jbundle.rb
CHANGED
@@ -50,9 +50,13 @@ module JBundle
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def build(name)
|
53
|
-
|
53
|
+
Builder.new(config).build_one find(name)
|
54
|
+
end
|
55
|
+
|
56
|
+
def find(name)
|
57
|
+
found = config.bundles_and_files.detect {|f| f.original_name == name || f.name == name}
|
54
58
|
raise NoBundleError, "No bundle or file found with name #{name}" unless found
|
55
|
-
|
59
|
+
found
|
56
60
|
end
|
57
61
|
|
58
62
|
def config_from_file(file)
|
data/lib/jbundle/builder.rb
CHANGED
@@ -13,8 +13,12 @@ module JBundle
|
|
13
13
|
@name, @dir = parse_name(name)
|
14
14
|
end
|
15
15
|
|
16
|
+
def ext
|
17
|
+
@ext ||= ::File.extname(name)
|
18
|
+
end
|
19
|
+
|
16
20
|
def buildable?
|
17
|
-
BUILDABLE_FILES.include?(
|
21
|
+
BUILDABLE_FILES.include?(ext)
|
18
22
|
end
|
19
23
|
|
20
24
|
# This only makes sense for one-file objects
|
data/lib/jbundle/command_line.rb
CHANGED
@@ -25,11 +25,10 @@ module JBundle
|
|
25
25
|
method_option :port, :default => "5555", :aliases => "-p"
|
26
26
|
method_option :jfile, :default => JBundle::JFILE, :aliases => "-j"
|
27
27
|
def server
|
28
|
-
require 'rack'
|
29
28
|
JBundle.config_from_file(options[:jfile])
|
30
29
|
say "Starting test server on http://localhost:#{options[:port]}. Available bundles:", :yellow
|
31
30
|
JBundle.config.bundles_and_files.each do |f|
|
32
|
-
say "- /#{f.original_name}", :green
|
31
|
+
say "- /#{f.original_name} ==> /#{f.name}", :green
|
33
32
|
end
|
34
33
|
|
35
34
|
handler = Rack::Handler.default
|
@@ -65,7 +64,7 @@ Done. Try it!
|
|
65
64
|
Then package your work
|
66
65
|
|
67
66
|
jsbundle
|
68
|
-
|
67
|
+
)
|
69
68
|
|
70
69
|
desc 'init', 'Create example JFile and test stubs'
|
71
70
|
method_option :tests, :default => 'qunit', :aliases => '-t'
|
data/lib/jbundle/server.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'rack'
|
1
2
|
module JBundle
|
2
3
|
|
3
4
|
class Server
|
@@ -13,7 +14,9 @@ module JBundle
|
|
13
14
|
bundle_name = env['PATH_INFO'].sub('/', '')
|
14
15
|
begin
|
15
16
|
JBundle.config_from_file(@jfile)
|
16
|
-
|
17
|
+
compiler = JBundle.build(bundle_name)
|
18
|
+
body = compiler.buildable? ? compiler.src : compiler.raw_src
|
19
|
+
[200, {'Content-Type' => ::Rack::Mime.mime_type(compiler.ext)}, [body]]
|
17
20
|
rescue NoBundleError => boom
|
18
21
|
p = bundle_name == '' ? '[bundle_name].js' : bundle_name
|
19
22
|
[404, {'Content-Type' => 'text/plain'}, ["No bundle defined. Try defining /#{p} in your JFile"]]
|
data/lib/jbundle/version.rb
CHANGED
data/spec/server_spec.rb
CHANGED
@@ -9,33 +9,53 @@ describe "JBundle::Server" do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
describe '#call' do
|
12
|
-
before do
|
13
|
-
@response = @server.call({'PATH_INFO' => '/foo.js'})
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'should be 404 if no JFile found' do
|
17
|
-
s = JBundle::Server.new("doesn-not-exist")
|
18
|
-
r = s.call({'PATH_INFO' => '/foo.js'})
|
19
|
-
r[0].should == 404
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should be 200 OK' do
|
23
|
-
@response[0].should == 200
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'should be a javascript response' do
|
27
|
-
@response[1]['Content-Type'].should == 'application/x-javascript'
|
28
|
-
end
|
29
12
|
|
30
|
-
|
31
|
-
|
13
|
+
describe 'with JavaScript bundle' do
|
14
|
+
before do
|
15
|
+
@response = @server.call({'PATH_INFO' => '/foo.js'})
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should be 404 if no JFile found' do
|
19
|
+
s = JBundle::Server.new("doesn-not-exist")
|
20
|
+
r = s.call({'PATH_INFO' => '/foo.js'})
|
21
|
+
r[0].should == 404
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should be 200 OK' do
|
25
|
+
@response[0].should == 200
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should be a javascript response' do
|
29
|
+
@response[1]['Content-Type'].should == 'application/javascript'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should return content for given bundle' do
|
33
|
+
@response[2].should == [JBundle.build('foo.js').src]
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should be 404 when no bundle found' do
|
37
|
+
r = @server.call({'PATH_INFO' => '/nonexisting.js'})
|
38
|
+
r[0].should == 404
|
39
|
+
end
|
32
40
|
end
|
33
41
|
|
34
|
-
|
35
|
-
|
36
|
-
|
42
|
+
describe 'with non-JS file' do
|
43
|
+
|
44
|
+
it 'should find and serve by original name' do
|
45
|
+
response = @server.call({'PATH_INFO' => '/nested/foo.txt'})
|
46
|
+
response[0].should == 200
|
47
|
+
response[1]['Content-Type'].should == 'text/plain'
|
48
|
+
response[2].should == ["This file is in a nested subdirectory\n"]
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should find and serve by distribution file name' do
|
52
|
+
response = @server.call({'PATH_INFO' => '/flat_foo.txt'})
|
53
|
+
response[0].should == 200
|
54
|
+
response[1]['Content-Type'].should == 'text/plain'
|
55
|
+
response[2].should == ["This file is in a nested subdirectory\n"]
|
56
|
+
end
|
57
|
+
|
37
58
|
end
|
38
|
-
|
39
59
|
end
|
40
60
|
|
41
61
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: jbundle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ismael Celis
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-19 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|