trackman 0.4.2 → 0.4.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/LICENSE +1 -1
- data/README.md +7 -7
- data/lib/trackman/assets/asset.rb +9 -7
- data/lib/trackman/assets/components/asset_factory.rb +14 -8
- data/lib/trackman/assets/components/bundled_asset.rb +29 -0
- data/lib/trackman/assets/components/composite_asset.rb +4 -5
- data/lib/trackman/assets/components/diffable.rb +1 -0
- data/lib/trackman/assets/components/hashable.rb +5 -6
- data/lib/trackman/assets/components/rails32_path_resolver.rb +1 -1
- data/lib/trackman/assets/components/remote_asset_factory.rb +13 -0
- data/lib/trackman/assets/components/shippable.rb +2 -2
- data/lib/trackman/assets/components.rb +3 -1
- data/lib/trackman/assets/remote_asset.rb +29 -9
- data/lib/trackman/railtie.rb +0 -1
- data/lib/trackman/version.rb +1 -1
- data/spec/asset_factory_spec.rb +3 -0
- data/spec/asset_spec.rb +2 -2
- data/spec/composite_asset_spec.rb +2 -2
- data/spec/css_asset_spec.rb +10 -10
- data/spec/diffable_spec.rb +2 -2
- data/spec/helpers/app_creator.rb +3 -3
- data/spec/rails32/first_push_spec.rb +1 -0
- data/spec/rails32_path_resolver_spec.rb +2 -2
- data/spec/remote_asset_spec.rb +34 -27
- data/spec/spec_helper.rb +21 -21
- metadata +4 -2
data/Gemfile.lock
CHANGED
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2012
|
1
|
+
Copyright (c) 2012 SynApps, Inc. All Rights Reserved
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
4
4
|
software and associated documentation files (the "Software"), to deal in the Software
|
data/README.md
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# Trackman
|
2
2
|
Trackman is a Heroku add-on that hosts your maintenance pages and their assets outside your app.
|
3
|
-
|
3
|
+
You keep them within your project, trackman syncs them to s3 when you deploy.
|
4
4
|
|
5
|
-
|
6
|
-
* Rails 2
|
7
|
-
* Rails 3
|
5
|
+
Works out of the box for Ruby(1.8.7 and 1.9.3) on
|
6
|
+
* Rails 2.3
|
7
|
+
* Rails 3.x
|
8
8
|
|
9
9
|
##Quick peek
|
10
10
|
###The first time
|
@@ -38,9 +38,9 @@ This will add trackman.rake to lib/tasks/
|
|
38
38
|
rake trackman:setup
|
39
39
|
```
|
40
40
|
This sets your initial heroku configurations and ensures that when your app is down or in maintenance your pages will be requested by heroku.
|
41
|
-
If you have maintenance or error pages setup for heroku,
|
41
|
+
If you have maintenance or error pages setup for heroku, trackman will back them up in a configuration before we overwrite them.
|
42
42
|
|
43
|
-
On your next push Trackman will look for changes to your
|
43
|
+
On your next push Trackman will look for changes to your pages, linked assets and sync them.
|
44
44
|
|
45
45
|
### Optional - If for any reason you wish to troubleshoot the sync operation:
|
46
46
|
|
@@ -84,7 +84,7 @@ https://github.com/SynApps/trackman/issues
|
|
84
84
|
|
85
85
|
###Copyright
|
86
86
|
|
87
|
-
Copyright © 2012
|
87
|
+
Copyright © 2012 SynApps
|
88
88
|
|
89
89
|
## License
|
90
90
|
|
@@ -1,11 +1,8 @@
|
|
1
1
|
module Trackman
|
2
2
|
module Assets
|
3
3
|
class Asset
|
4
|
-
extend Components::AssetFactory
|
5
|
-
extend Components::
|
6
|
-
extend Components::Diffable
|
7
|
-
extend Components::Shippable
|
8
|
-
include Components::Hashable
|
4
|
+
extend Components::AssetFactory, Components::Conventions
|
5
|
+
extend Components::Diffable, Components::Shippable
|
9
6
|
include Comparable
|
10
7
|
|
11
8
|
def initialize attributes = {}
|
@@ -19,7 +16,7 @@ module Trackman
|
|
19
16
|
attr_reader :path, :assets
|
20
17
|
|
21
18
|
def to_remote
|
22
|
-
RemoteAsset.
|
19
|
+
RemoteAsset.create(:path => @path, :virtual_path => self.virtual_path)
|
23
20
|
end
|
24
21
|
|
25
22
|
def ==(other)
|
@@ -50,7 +47,11 @@ module Trackman
|
|
50
47
|
def is_child_of(parent)
|
51
48
|
parent.assets.include? self
|
52
49
|
end
|
53
|
-
|
50
|
+
|
51
|
+
def to_s
|
52
|
+
"<#{self.class}:\npath=#{path}\nfile_hash=#{file_hash}>"
|
53
|
+
end
|
54
|
+
|
54
55
|
def self.all
|
55
56
|
return [] unless maintenance_path.exist?
|
56
57
|
|
@@ -63,6 +64,7 @@ module Trackman
|
|
63
64
|
def self.sync
|
64
65
|
local = Asset.all
|
65
66
|
remote = RemoteAsset.all
|
67
|
+
|
66
68
|
diff_result = diff(local, remote)
|
67
69
|
|
68
70
|
Debugger.trace diff_result.inspect
|
@@ -4,26 +4,33 @@ module Trackman
|
|
4
4
|
module AssetFactory
|
5
5
|
def create attributes = {}
|
6
6
|
path = attributes[:path]
|
7
|
+
instance = retrieve_parent(path).new attributes
|
8
|
+
add_content_behavior instance
|
9
|
+
end
|
7
10
|
|
11
|
+
def retrieve_parent path
|
8
12
|
if File.extname(path) == '.html'
|
9
13
|
parent = HtmlAsset
|
10
14
|
elsif File.extname(path) == '.css'
|
11
15
|
parent = CssAsset
|
12
16
|
else
|
13
17
|
parent = Asset
|
14
|
-
end
|
15
|
-
|
16
|
-
|
18
|
+
end
|
19
|
+
parent
|
20
|
+
end
|
17
21
|
|
22
|
+
def add_content_behavior instance
|
18
23
|
if asset_pipeline_enabled?
|
19
|
-
instance.extend Rails32PathResolver
|
24
|
+
instance.extend Rails32PathResolver, BundledAsset
|
25
|
+
return instance
|
20
26
|
elsif rails_defined? #fallback to rails without asset pipeline
|
21
27
|
instance.extend RailsPathResolver
|
22
28
|
end
|
29
|
+
instance.extend Hashable
|
23
30
|
|
24
31
|
instance
|
25
32
|
end
|
26
|
-
|
33
|
+
|
27
34
|
def rails_defined?
|
28
35
|
Object.const_defined?(:Rails)
|
29
36
|
end
|
@@ -31,11 +38,10 @@ module Trackman
|
|
31
38
|
def asset_pipeline_enabled?
|
32
39
|
rails_defined? &&
|
33
40
|
Rails.respond_to?(:application) &&
|
34
|
-
Rails.application.respond_to?(:
|
35
|
-
Rails.application.config.respond_to?(:assets) &&
|
41
|
+
Rails.application.respond_to?(:assets) &&
|
36
42
|
Rails.application.config.assets.enabled
|
37
43
|
end
|
38
44
|
end
|
39
45
|
end
|
40
46
|
end
|
41
|
-
end
|
47
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Trackman
|
2
|
+
module Assets
|
3
|
+
module Components
|
4
|
+
module BundledAsset
|
5
|
+
include Hashable
|
6
|
+
|
7
|
+
def env
|
8
|
+
@@env ||= ::Rails.application.assets.index
|
9
|
+
end
|
10
|
+
|
11
|
+
def data
|
12
|
+
result = (@bundled ||= init_data)
|
13
|
+
|
14
|
+
return super if result.nil? || result.length == 0
|
15
|
+
result
|
16
|
+
end
|
17
|
+
|
18
|
+
def init_data
|
19
|
+
begin
|
20
|
+
return env[env.attributes_for(path.realpath).pathname].to_s
|
21
|
+
rescue
|
22
|
+
return nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -14,15 +14,14 @@ module Trackman
|
|
14
14
|
|
15
15
|
def assets
|
16
16
|
internals = children_paths.select{|p| p.internal_path? }.map{|p| {old: p, new_path: translate(p, path)} }
|
17
|
-
internals.select{|p| !p[:new_path].nil? }.map{|p| asset_from(p[:old], p[:new_path])}
|
18
|
-
|
19
|
-
sum
|
20
|
-
sum
|
17
|
+
internals = internals.select{|p| !p[:new_path].nil? }.map{|p| asset_from(p[:old], p[:new_path])}
|
18
|
+
internals.inject([]) do |sum, a|
|
19
|
+
(sum << a) + a.assets.select{|child| !sum.include?(child) }
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
24
23
|
def asset_from(virtual, physical)
|
25
|
-
Asset.create(:virtual_path => virtual
|
24
|
+
Asset.create(:virtual_path => virtual, :path => physical)
|
26
25
|
end
|
27
26
|
|
28
27
|
def inner_css_paths
|
@@ -4,6 +4,7 @@ module Trackman
|
|
4
4
|
module Diffable
|
5
5
|
def diff local, remote
|
6
6
|
to_create = local.select{|a| remote.all? { |s| a.path != s.path } }.map{|a| a.to_remote }
|
7
|
+
|
7
8
|
{
|
8
9
|
:create => to_create,
|
9
10
|
:update => remote.select{|a| local.any?{ |s| a.path == s.path && a.file_hash != s.file_hash }},
|
@@ -4,24 +4,23 @@ module Trackman
|
|
4
4
|
module Assets
|
5
5
|
module Components
|
6
6
|
module Hashable
|
7
|
-
|
8
7
|
def data
|
9
|
-
@data ||= read_file
|
8
|
+
@data ||= read_file(path)
|
10
9
|
end
|
11
10
|
|
12
11
|
def file_hash
|
13
|
-
Digest::MD5.hexdigest(data)
|
12
|
+
@file_hash ||= (data.nil? ? "" : Digest::MD5.hexdigest(data))
|
14
13
|
end
|
15
14
|
|
16
15
|
protected
|
17
|
-
def read_file
|
16
|
+
def read_file(file_path)
|
18
17
|
begin
|
19
|
-
file = File.open(
|
18
|
+
file = File.open(file_path)
|
20
19
|
return file.read
|
21
20
|
rescue
|
22
21
|
return nil
|
23
22
|
ensure
|
24
|
-
file.close
|
23
|
+
file.close unless file.nil?
|
25
24
|
end
|
26
25
|
end
|
27
26
|
end
|
@@ -16,7 +16,7 @@ module Trackman
|
|
16
16
|
path = prepare_for_sprocket(path, parent_url, root) if path.relative?
|
17
17
|
begin
|
18
18
|
path = sprockets.resolve path
|
19
|
-
rescue
|
19
|
+
rescue Sprockets::FileNotFound => e
|
20
20
|
Debugger.trace "Could not find path: #{path}\n#{e.message}"
|
21
21
|
return nil
|
22
22
|
end
|
@@ -15,9 +15,9 @@ module Trackman
|
|
15
15
|
def build_proc symbol, instance
|
16
16
|
case symbol
|
17
17
|
when :update
|
18
|
-
proc = Proc.new { instance.update
|
18
|
+
proc = Proc.new { instance.update }
|
19
19
|
when :create
|
20
|
-
proc = Proc.new { instance.
|
20
|
+
proc = Proc.new { instance.insert }
|
21
21
|
when :delete
|
22
22
|
proc = Proc.new { instance.delete }
|
23
23
|
else
|
@@ -1,7 +1,9 @@
|
|
1
1
|
module Trackman
|
2
2
|
module Assets
|
3
3
|
module Components
|
4
|
-
@@modules = [:Conventions, :Diffable, :Hashable,
|
4
|
+
@@modules = [:Conventions, :Diffable, :Hashable,
|
5
|
+
:Shippable, :CompositeAsset, :AssetFactory, :PathResolver,
|
6
|
+
:Rails32PathResolver, :RailsPathResolver, :BundledAsset, :RemoteAssetFactory]
|
5
7
|
|
6
8
|
::Trackman::Assets.autoloads 'trackman/assets/components', @@modules do |s,p|
|
7
9
|
autoload s, p
|
@@ -7,6 +7,8 @@ RestClient.log = Logger.new(STDOUT) if Debugger.debug_mode?
|
|
7
7
|
module Trackman
|
8
8
|
module Assets
|
9
9
|
class RemoteAsset < Asset
|
10
|
+
extend Components::RemoteAssetFactory
|
11
|
+
|
10
12
|
@@server_url = ENV['TRACKMAN_URL']
|
11
13
|
|
12
14
|
@@site = "#{@@server_url}/assets"
|
@@ -24,10 +26,6 @@ module Trackman
|
|
24
26
|
RestClient.post "#{@@server_url}/exceptions", :exception => { :message => ex.message, :backtrace => ex.backtrace }, :ssl_version => 'SSLv3'
|
25
27
|
end
|
26
28
|
|
27
|
-
def file_hash
|
28
|
-
@file_hash || super
|
29
|
-
end
|
30
|
-
|
31
29
|
def validate_path?
|
32
30
|
false
|
33
31
|
end
|
@@ -36,22 +34,25 @@ module Trackman
|
|
36
34
|
response = RestClient.get "#{@@site}/#{id}"
|
37
35
|
|
38
36
|
body = Hash[JSON.parse(response).map{ |k, v| [k.to_sym, v] }]
|
39
|
-
|
37
|
+
|
38
|
+
RemoteAsset.create(body)
|
40
39
|
end
|
41
40
|
|
42
41
|
def self.all
|
43
|
-
get_attributes.map{ |r| RemoteAsset.
|
42
|
+
get_attributes.map{ |r| RemoteAsset.create(r) }.sort
|
44
43
|
end
|
45
44
|
|
46
|
-
|
45
|
+
|
46
|
+
def insert
|
47
47
|
response = RestClient.post @@site, build_params, :content_type => :json, :accept => :json, :ssl_version => 'SSLv3'
|
48
48
|
path = response.headers[:location]
|
49
49
|
@id = path[/\d+$/].to_i
|
50
50
|
end
|
51
51
|
|
52
|
-
def update
|
52
|
+
def update
|
53
53
|
RestClient.put "#{@@site}/#{id}", build_params, :content_type => :json, :accept => :json, :ssl_version => 'SSLv3'
|
54
54
|
end
|
55
|
+
|
55
56
|
def delete
|
56
57
|
response = RestClient.delete "#{@@site}/#{id}"
|
57
58
|
true
|
@@ -70,7 +71,7 @@ module Trackman
|
|
70
71
|
|
71
72
|
private
|
72
73
|
def build_params
|
73
|
-
{ :asset => { :virtual_path => virtual_path.to_s, :path => path.to_s, :file =>
|
74
|
+
{ :asset => { :virtual_path => virtual_path.to_s, :path => path.to_s, :file => AssetIO.new(path.to_s, data) }, :multipart => true }
|
74
75
|
end
|
75
76
|
def ensure_config
|
76
77
|
raise Errors::ConfigNotFoundError, "The config TRACKMAN_URL is missing." if @@server_url.nil?
|
@@ -78,6 +79,25 @@ module Trackman
|
|
78
79
|
def self.get_attributes
|
79
80
|
JSON.parse(RestClient.get @@site).map{|r| Hash[r.map{ |k, v| [k.to_sym, v] }] }
|
80
81
|
end
|
82
|
+
|
83
|
+
class AssetIO < StringIO
|
84
|
+
attr_accessor :filepath
|
85
|
+
|
86
|
+
def initialize(*args)
|
87
|
+
super(*args[1..-1])
|
88
|
+
@filepath = args[0]
|
89
|
+
end
|
90
|
+
|
91
|
+
def original_filename
|
92
|
+
File.basename(filepath)
|
93
|
+
end
|
94
|
+
def content_type
|
95
|
+
MIME::Types.type_for(path).to_s
|
96
|
+
end
|
97
|
+
def path
|
98
|
+
@filepath
|
99
|
+
end
|
100
|
+
end
|
81
101
|
end
|
82
102
|
end
|
83
103
|
end
|
data/lib/trackman/railtie.rb
CHANGED
data/lib/trackman/version.rb
CHANGED
data/spec/asset_factory_spec.rb
CHANGED
data/spec/asset_spec.rb
CHANGED
@@ -30,7 +30,7 @@ describe Trackman::Assets::Asset do
|
|
30
30
|
describe "#data" do
|
31
31
|
it "returns content of the file specified by path" do
|
32
32
|
path = "./spec/spec_helper.rb"
|
33
|
-
asset = Asset.
|
33
|
+
asset = Asset.create(:path => path)
|
34
34
|
|
35
35
|
asset.data.should eq(File.open(path).read)
|
36
36
|
end
|
@@ -39,7 +39,7 @@ describe Trackman::Assets::Asset do
|
|
39
39
|
describe "#hash" do
|
40
40
|
it "returns the fingerprint of data" do
|
41
41
|
path = "./spec/spec_helper.rb"
|
42
|
-
asset = Asset.
|
42
|
+
asset = Asset.create(:path => path)
|
43
43
|
|
44
44
|
file = File.open path
|
45
45
|
asset.file_hash.should eq(Digest::MD5.hexdigest(file.read))
|
@@ -23,8 +23,8 @@ describe Trackman::Assets::Components::CompositeAsset do
|
|
23
23
|
@composite = TestComposite.new
|
24
24
|
end
|
25
25
|
it "has children" do
|
26
|
-
asset =
|
27
|
-
asset.assets.should == [
|
26
|
+
asset = Asset.create(:path => 'spec/test_data/css/with-asset.css')
|
27
|
+
asset.assets.should == [Asset.create(:path => 'spec/test_data/css/imported.css')]
|
28
28
|
end
|
29
29
|
|
30
30
|
it "removes the translated assets that are nil" do
|
data/spec/css_asset_spec.rb
CHANGED
@@ -2,24 +2,24 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe CssAsset do
|
4
4
|
it "returns its assets when it has import in it" do
|
5
|
-
asset =
|
5
|
+
asset = Asset.create(:path => 'spec/test_data/css/with-asset.css')
|
6
6
|
|
7
|
-
asset.assets.should == [
|
7
|
+
asset.assets.should == [Asset.create(:path => 'spec/test_data/css/imported.css')]
|
8
8
|
end
|
9
9
|
|
10
10
|
it "returns multiple assets when it has multiple imports" do
|
11
|
-
actual =
|
11
|
+
actual = Asset.create(:path => 'spec/test_data/css/with-multiple-assets.css')
|
12
12
|
expected = [
|
13
|
-
|
14
|
-
|
13
|
+
Asset.create(:path => 'spec/test_data/css/imported.css'),
|
14
|
+
Asset.create(:path => 'spec/test_data/css/imported2.css')
|
15
15
|
]
|
16
16
|
|
17
17
|
actual.assets.should == expected
|
18
18
|
end
|
19
19
|
|
20
20
|
it "returns an image if it is within the css" do
|
21
|
-
actual =
|
22
|
-
expected = [ Asset.
|
21
|
+
actual = Asset.create(:path => 'spec/test_data/css/image/with-image.css')
|
22
|
+
expected = [ Asset.create(:path => 'spec/test_data/css/image/riding-you.jpg')]
|
23
23
|
|
24
24
|
actual.assets.should == expected
|
25
25
|
end
|
@@ -27,9 +27,9 @@ describe CssAsset do
|
|
27
27
|
it "returns all recursive css imports and images under the css file" do
|
28
28
|
expected =
|
29
29
|
[
|
30
|
-
|
31
|
-
|
32
|
-
Asset.
|
30
|
+
Asset.create(:path => 'spec/test_data/css/recursive/imported-lvl2.css'),
|
31
|
+
Asset.create(:path => 'spec/test_data/css/recursive/imported-lvl3.css'),
|
32
|
+
Asset.create(:path => 'spec/test_data/css/recursive/riding-you.jpg')
|
33
33
|
]
|
34
34
|
asset = Asset.create(:path => 'spec/test_data/css/recursive/imported-recursive.css')
|
35
35
|
actual = asset.assets
|
data/spec/diffable_spec.rb
CHANGED
@@ -13,8 +13,8 @@ describe Trackman::Assets::Components::Diffable do
|
|
13
13
|
}
|
14
14
|
|
15
15
|
remote = [
|
16
|
-
RemoteAsset.
|
17
|
-
RemoteAsset.
|
16
|
+
RemoteAsset.create(:path => 'spec/test_data/sample.html', :file_hash => 'abcd123'),
|
17
|
+
RemoteAsset.create(:path => 'spec/test_data/test1.jpeg', :file_hash => '12345')
|
18
18
|
]
|
19
19
|
|
20
20
|
local = [Asset.create(:path => 'spec/test_data/sample.html')]
|
data/spec/helpers/app_creator.rb
CHANGED
@@ -18,12 +18,12 @@ class AppCreator
|
|
18
18
|
@@config.each do |s, v|
|
19
19
|
RemoteAsset.send(:class_variable_set, s, v)
|
20
20
|
end
|
21
|
+
|
22
|
+
@@config
|
21
23
|
end
|
22
24
|
|
23
25
|
def self.reset
|
24
|
-
RemoteAsset.all.each
|
25
|
-
a.delete
|
26
|
-
end
|
26
|
+
RemoteAsset.all.each { |a| a.delete }
|
27
27
|
|
28
28
|
@@config.each do |k,v|
|
29
29
|
RemoteAsset.send(:class_variable_set, k, v)
|
@@ -10,9 +10,9 @@ describe Trackman::Assets::Components::Rails32PathResolver do
|
|
10
10
|
@test = Rails32ResolverTest.new
|
11
11
|
end
|
12
12
|
|
13
|
-
it "does not throw when sprockets throws" do
|
13
|
+
it "does not throw when sprockets throws a FileNotFound" do
|
14
14
|
sprocket = double "SprocketEnvironment"
|
15
|
-
sprocket.stub(:resolve).and_raise(
|
15
|
+
sprocket.stub(:resolve).and_raise(Sprockets::FileNotFound)
|
16
16
|
|
17
17
|
@test.stub(:prepare_for_sprocket).and_return('some/path')
|
18
18
|
@test.stub(:sprockets).and_return(sprocket)
|
data/spec/remote_asset_spec.rb
CHANGED
@@ -1,32 +1,33 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'helpers/app_creator'
|
2
3
|
|
3
4
|
describe Trackman::Assets::RemoteAsset do
|
4
|
-
before :
|
5
|
-
user = ENV['HEROKU_USERNAME']
|
6
|
-
pass = ENV['HEROKU_PASSWORD']
|
7
|
-
server = ENV['TRACKMAN_SERVER_URL']
|
5
|
+
before :each do
|
6
|
+
# user = ENV['HEROKU_USERNAME']
|
7
|
+
# pass = ENV['HEROKU_PASSWORD']
|
8
|
+
# server = ENV['TRACKMAN_SERVER_URL']
|
9
|
+
@old_file = nil
|
10
|
+
@config = AppCreator.create
|
8
11
|
|
9
|
-
response = RestClient.post "http://#{user}:#{pass}@#{server}/heroku/resources", :plan => 'test', :heroku_id => 123
|
10
|
-
json = JSON.parse response
|
11
|
-
@trackman_url = json['config']['TRACKMAN_URL'].gsub('https', 'http')
|
12
|
+
# response = RestClient.post "http://#{user}:#{pass}@#{server}/heroku/resources", :plan => 'test', :heroku_id => 123
|
13
|
+
# json = JSON.parse response
|
14
|
+
# @trackman_url = json['config']['TRACKMAN_URL'].gsub('https', 'http')
|
12
15
|
|
13
|
-
@config = [[:@@server_url, @trackman_url], [:@@site, "#{@trackman_url}/assets"]]
|
14
|
-
@config.each do |s, v|
|
15
|
-
|
16
|
-
end
|
16
|
+
# @config = [[:@@server_url, @trackman_url], [:@@site, "#{@trackman_url}/assets"]]
|
17
|
+
# @config.each do |s, v|
|
18
|
+
# RemoteAsset.send(:class_variable_set, s, v)
|
19
|
+
# end
|
17
20
|
end
|
18
21
|
|
19
22
|
after :each do
|
20
|
-
|
21
|
-
|
22
|
-
end
|
23
|
-
|
23
|
+
AppCreator.reset
|
24
|
+
@config = nil
|
24
25
|
File.open('spec/test_data/y.css', 'w') {|f| f.write @old_file } unless @old_file.nil?
|
25
26
|
end
|
26
27
|
|
27
28
|
it "creates assets on the server" do
|
28
|
-
expected = RemoteAsset.
|
29
|
-
expected.
|
29
|
+
expected = RemoteAsset.create(:path => 'spec/test_data/test2.png')
|
30
|
+
expected.insert
|
30
31
|
|
31
32
|
actual = RemoteAsset.find expected.id
|
32
33
|
|
@@ -34,8 +35,8 @@ describe Trackman::Assets::RemoteAsset do
|
|
34
35
|
end
|
35
36
|
|
36
37
|
it "deletes assets on the server" do
|
37
|
-
expected = RemoteAsset.
|
38
|
-
expected.
|
38
|
+
expected = RemoteAsset.create(:path => 'spec/test_data/y.css')
|
39
|
+
expected.insert
|
39
40
|
|
40
41
|
expected.delete
|
41
42
|
|
@@ -43,34 +44,40 @@ describe Trackman::Assets::RemoteAsset do
|
|
43
44
|
end
|
44
45
|
|
45
46
|
it "returns all assets on the server" do
|
46
|
-
expected = [
|
47
|
+
expected = [
|
48
|
+
'spec/test_data/a.js', 'spec/test_data/y.css',
|
49
|
+
'public/503-error.html', 'public/503.html',
|
50
|
+
'spec/test_data/sample.html'
|
51
|
+
]
|
47
52
|
|
48
|
-
assets = ['spec/test_data/a.js', 'spec/test_data/y.css', 'spec/test_data/sample.html'].map
|
53
|
+
assets = ['spec/test_data/a.js', 'spec/test_data/y.css', 'spec/test_data/sample.html'].map do |f|
|
54
|
+
RemoteAsset.create(:path => f)
|
55
|
+
end
|
49
56
|
|
50
|
-
assets.each{|f| f.
|
57
|
+
assets.each{|f| f.insert }
|
51
58
|
|
52
59
|
RemoteAsset.all.map{|a| a.path.to_s }.should eq(expected)
|
53
60
|
end
|
54
61
|
|
55
62
|
it "updates assets on the server" do
|
56
|
-
expected = RemoteAsset.
|
63
|
+
expected = RemoteAsset.create(:path => 'spec/test_data/y.css')
|
57
64
|
|
58
|
-
expected.
|
65
|
+
expected.insert
|
59
66
|
|
60
67
|
@old_file = File.open(expected.path) { |f| f.read }
|
61
68
|
File.open(expected.path, 'w') { |f| f.write "wassup cutie pie?" }
|
62
69
|
|
63
|
-
expected.update
|
70
|
+
expected.update
|
64
71
|
actual = RemoteAsset.find(expected.id)
|
65
72
|
|
66
73
|
actual.should eq(expected)
|
67
74
|
end
|
68
75
|
|
69
76
|
it "throws if a config is missing" do
|
70
|
-
begin
|
77
|
+
begin
|
71
78
|
@config.each {|k,v| RemoteAsset.send(:class_variable_set, k, nil) }
|
72
79
|
@config.each do |k,v|
|
73
|
-
lambda { RemoteAsset.
|
80
|
+
lambda { RemoteAsset.create(:path => 'spec/test_data/a.js') }.should raise_error(Trackman::Assets::Errors::ConfigNotFoundError)
|
74
81
|
end
|
75
82
|
ensure
|
76
83
|
@config.each {|k,v| RemoteAsset.send(:class_variable_set, k, v) }
|
data/spec/spec_helper.rb
CHANGED
@@ -5,34 +5,34 @@
|
|
5
5
|
#
|
6
6
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
7
|
require 'trackman'
|
8
|
-
|
8
|
+
require 'sprockets'
|
9
9
|
RSpec.configure do |config|
|
10
10
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
11
11
|
config.run_all_when_everything_filtered = true
|
12
12
|
config.filter_run :focus
|
13
13
|
end
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
env
|
33
|
-
end
|
34
|
-
end
|
15
|
+
module Trackman::Assets::Components::BundledAsset
|
16
|
+
def env
|
17
|
+
working_dir = Pathname.new(Dir.pwd)
|
18
|
+
env = ::Sprockets::Environment.new
|
19
|
+
paths = ['app', 'lib', 'vendor'].inject([]) do |array, f|
|
20
|
+
array + ["images", "stylesheets", "javascripts"].map{|p| "#{working_dir}/#{f}/assets/#{p}" }
|
21
|
+
end
|
22
|
+
paths << "#{working_dir}/public"
|
23
|
+
paths.each{|p| env.append_path p }
|
24
|
+
env
|
25
|
+
end
|
26
|
+
end
|
27
|
+
module Trackman::Assets::Components::Rails32PathResolver
|
28
|
+
def sprockets
|
29
|
+
env = ::Sprockets::Environment.new
|
30
|
+
paths = ['app', 'lib', 'vendor'].inject([]) do |array, f|
|
31
|
+
array + ["images", "stylesheets", "javascripts"].map{|p| "#{working_dir}/#{f}/assets/#{p}" }
|
35
32
|
end
|
33
|
+
paths << "#{working_dir}/public"
|
34
|
+
paths.each{|p| env.append_path p }
|
35
|
+
env
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trackman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-09-
|
13
|
+
date: 2012-09-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rest-client
|
@@ -163,6 +163,7 @@ files:
|
|
163
163
|
- lib/trackman/assets/asset.rb
|
164
164
|
- lib/trackman/assets/components.rb
|
165
165
|
- lib/trackman/assets/components/asset_factory.rb
|
166
|
+
- lib/trackman/assets/components/bundled_asset.rb
|
166
167
|
- lib/trackman/assets/components/composite_asset.rb
|
167
168
|
- lib/trackman/assets/components/conventions.rb
|
168
169
|
- lib/trackman/assets/components/diffable.rb
|
@@ -170,6 +171,7 @@ files:
|
|
170
171
|
- lib/trackman/assets/components/path_resolver.rb
|
171
172
|
- lib/trackman/assets/components/rails32_path_resolver.rb
|
172
173
|
- lib/trackman/assets/components/rails_path_resolver.rb
|
174
|
+
- lib/trackman/assets/components/remote_asset_factory.rb
|
173
175
|
- lib/trackman/assets/components/shippable.rb
|
174
176
|
- lib/trackman/assets/css_asset.rb
|
175
177
|
- lib/trackman/assets/errors.rb
|