static_fm 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -2,12 +2,22 @@
2
2
 
3
3
  A static file manager: install and upgrade vendor assets (Javascript|CSS).
4
4
 
5
- ##
5
+ ## About
6
6
 
7
7
  This project is still under heavy development
8
8
 
9
+ ## Development
10
+
11
+ rake # Runs non-network specs
12
+ rake network # Runs all specs, will hit network to test all downloads
13
+ ASSET=backbone rake network # Runs all non-network specs + network check for backbone asset
14
+
9
15
  ## Contributing to static_fm
10
16
 
17
+ To add a new library to static_fm, fork the project, add an entry to static.yml on a feature branch and submit a pull request.
18
+
19
+ ## Best practices
20
+
11
21
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
12
22
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
13
23
  * Fork the project
data/Rakefile CHANGED
@@ -33,7 +33,7 @@ Jeweler::RubygemsDotOrgTasks.new
33
33
  require 'rspec/core'
34
34
  require 'rspec/core/rake_task'
35
35
  RSpec::Core::RakeTask.new(:spec) do |spec|
36
- spec.pattern = FileList['spec/**/*_spec.rb']
36
+ spec.pattern = FileList['spec/**/*_spec.rb'].exclude('spec/**/network_spec.rb')
37
37
  end
38
38
 
39
39
  RSpec::Core::RakeTask.new(:rcov) do |spec|
@@ -41,6 +41,11 @@ RSpec::Core::RakeTask.new(:rcov) do |spec|
41
41
  spec.rcov = true
42
42
  end
43
43
 
44
+ RSpec::Core::RakeTask.new(:network) do |spec|
45
+ # includes network_spec which requires network access to perform and check downloads
46
+ spec.pattern = FileList['spec/**/*_spec.rb']
47
+ end
48
+
44
49
  task :default => :spec
45
50
 
46
51
  # require 'rake/task'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/config/static.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  "underscore":
2
2
  url: "https://github.com/documentcloud/underscore/raw/{version}/underscore.js"
3
3
  description: "javascript's utility belt"
4
- compressed: "underscore-min.js"
4
+ compressed_url: "http://cdnjs.cloudflare.com/ajax/libs/underscore.js/{version}/underscore-min.js"
5
5
  version: "1.1.7"
6
6
 
7
7
  "raphael":
@@ -133,7 +133,7 @@
133
133
 
134
134
  "backbone":
135
135
  url: "https://github.com/documentcloud/backbone/raw/{version}/backbone.js"
136
- compressed: "backbone-min.js"
136
+ compressed_url: "http://cdnjs.cloudflare.com/ajax/libs/backbone.js/{version}/backbone-min.js"
137
137
  description: "Backbone supplies structure to Javascript Apps by providing models, views, collections, and events"
138
138
  version: "0.5.3"
139
139
 
@@ -153,9 +153,10 @@
153
153
  version: "4.0"
154
154
 
155
155
  "modernizr":
156
- url: "https://github.com/Modernizr/Modernizr/raw/v{version}/modernizr.js"
156
+ url: "http://www.modernizr.com/downloads/modernizr-{version}.js"
157
+ file_name: "modernizr.js"
157
158
  description: "Feature detection to test browsers against upcoming features"
158
- version: "1.7"
159
+ version: "2.0.6"
159
160
 
160
161
  "mustache.js":
161
162
  url: "https://raw.github.com/janl/mustache.js/{version}/mustache.js"
@@ -165,4 +166,5 @@
165
166
  "jasmine-jquery.js":
166
167
  url: "https://github.com/downloads/velesin/jasmine-jquery/jasmine-jquery-{version}.js"
167
168
  description: "jQuery matchers and fixture loader for Jasmine framework"
168
- version: "1.3.1"
169
+ version: "1.3.1"
170
+ file_name: "jasmine-jquery.js"
@@ -42,15 +42,19 @@ module StaticFM
42
42
  end
43
43
 
44
44
 
45
- attr_accessor :name, :url, :version, :compressed, :description, :file_name
45
+ attr_accessor :name, :url, :version, :compressed,
46
+ :compressed_url, :description, :file_name, :dependencies
46
47
 
47
48
  def initialize(name, attributes = {})
48
49
  @name = name
49
50
  attributes.each_pair do |attribute, value|
50
51
  self.send("#{attribute}=", value)
51
52
  end
53
+ end
52
54
 
53
- update_url_with_version!
55
+ def url_with_options(options = {})
56
+ calculated_url = options[:compress] ? compressed_url : url
57
+ update_url_with_version(calculated_url, @version)
54
58
  end
55
59
 
56
60
  def host
@@ -69,12 +73,8 @@ module StaticFM
69
73
  @file_name.nil? ? basename : @file_name
70
74
  end
71
75
 
72
- def compressed_path
73
- @compressed && path.gsub(basename, @compressed)
74
- end
75
-
76
76
  def compressed_url
77
- @compressed && @url.gsub(basename, @compressed)
77
+ @compressed_url || (@compressed && @url.gsub(basename, @compressed))
78
78
  end
79
79
 
80
80
  def display_name
@@ -84,11 +84,11 @@ module StaticFM
84
84
  protected
85
85
 
86
86
  def parsed_uri
87
- @parsed_uri ||= URI.parse(@url)
87
+ @parsed_uri ||= URI.parse(update_url_with_version(@url, @version))
88
88
  end
89
89
 
90
- def update_url_with_version!
91
- @url.gsub!(/\{version\}/, @version) unless @version.nil?
90
+ def update_url_with_version(url, version = nil)
91
+ version.nil? ? url : url.gsub(/\{version\}/, version)
92
92
  end
93
93
  end
94
94
 
@@ -33,7 +33,8 @@ module StaticFM
33
33
  end
34
34
 
35
35
  def url
36
- compressed? ? @asset.compressed_url : @asset.url
36
+ # @asset.url_with_options(options)
37
+ @asset.url_with_options({ :compress => compressed? })
37
38
  end
38
39
 
39
40
  def compressed?
@@ -4,29 +4,4 @@ namespace :static do
4
4
  puts "static <library>"
5
5
  end
6
6
 
7
- namespace :install do
8
-
9
- desc 'Update backbone'
10
- task :backbone do
11
- dir = File.dirname(File.expand_path(__FILE__))
12
- StaticFM::Updater.update! do |u|
13
- u.url = "http://documentcloud.github.com/backbone"
14
- u.dir = File.join("public", "javascripts")
15
- u.files << "backbone.js"
16
- u.files << "backbone-min.js"
17
- end
18
- end
19
-
20
- desc 'Update underscore'
21
- task :underscore do
22
- StaticFM::Updater.update!.update! do |u|
23
- u.url = "http://documentcloud.github.com/underscore"
24
- u.dir = Rails.root.join("public", "javascripts", "vendor")
25
- u.files << "underscore.js"
26
- u.files << "underscore-min.js"
27
- end
28
- end
29
-
30
- end
31
-
32
7
  end
data/lib/static_fm.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require "static_fm/installer"
2
- require "static_fm/updater"
3
2
  require "static_fm/asset"
4
3
 
5
4
  require 'logger'
data/spec/spec_helper.rb CHANGED
@@ -11,4 +11,12 @@ RSpec.configure do |config|
11
11
 
12
12
  end
13
13
 
14
- StaticFM::Logger.silence!
14
+ StaticFM::Logger.silence!
15
+
16
+ at_exit do
17
+ # Run 'rake network' to test downloads
18
+ # Run DOWNLOAD=preserve rake network to test downloads and keep directory for inspection
19
+ if !!ENV['DOWNLOAD'] == "preserve" && File.directory?('./spec/downloads')
20
+ system "rm ./spec/downloads/*"
21
+ end
22
+ end
@@ -45,18 +45,25 @@ describe StaticFM::Asset do
45
45
  end
46
46
  end
47
47
 
48
- describe "compressed_path" do
49
- it "should replace basename with compressed" do
50
- @asset.compressed = "backbone-min.js"
51
- @asset.compressed_path.should == "/path/to/backbone-min.js"
48
+ describe "url_with_options" do
49
+ before(:each) do
50
+ @asset = StaticFM::Asset.new("backbone", {
51
+ :url => "http://www.example.com/path/to/{version}/backbone.js",
52
+ :version => "0.1"
53
+ })
52
54
  end
53
55
 
54
- it "should return nil if no compressed basename" do
55
- @asset.compressed_path.should be_nil
56
+ it "should return url with gsubbed version if no special options" do
57
+ @asset.url_with_options.should == "http://www.example.com/path/to/0.1/backbone.js"
56
58
  end
57
59
  end
58
60
 
59
61
  describe "compressed_url" do
62
+ it "should return explicitly defined url" do
63
+ @asset.compressed_url = "http://www.example.com/path/to/backbone-min.js"
64
+ @asset.compressed_url.should == "http://www.example.com/path/to/backbone-min.js"
65
+ end
66
+
60
67
  it "should replace basename with compressed" do
61
68
  @asset.compressed = "backbone-min.js"
62
69
  @asset.compressed_url.should == "http://www.example.com/path/to/backbone-min.js"
@@ -0,0 +1,29 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "StaticFM integration" do
4
+
5
+ def file_should_contain_desired_code(file_name, code)
6
+ File.readlines(file_name).any? { |line| !!line.match(/#{Regexp.escape(code).downcase}/i) }
7
+ end
8
+
9
+ def file_should_contain_bytes(file_name)
10
+ File.size(file_name).should > 128
11
+ end
12
+
13
+ describe "downloads" do
14
+ it "should download assets in static.yml" do
15
+ config = StaticFM::Asset.config
16
+ assets = ENV['ASSET'].nil? ? config : {ENV['ASSET'] => config[ENV['ASSET']]}
17
+ assets.each_pair do |asset_name, attributes|
18
+ asset = StaticFM::Asset.find(asset_name)
19
+ destination = "./spec/downloads"
20
+ installer = StaticFM::Installer.new(asset, destination)
21
+ installer.download
22
+
23
+ File.exist?(installer.file_name).should be_true
24
+ file_should_contain_bytes(installer.file_name)
25
+ file_should_contain_desired_code(installer.file_name, asset.name)
26
+ end
27
+ end
28
+ end
29
+ end
data/static_fm.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{static_fm}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ross Kaffenberger"]
12
- s.date = %q{2011-09-06}
12
+ s.date = %q{2011-09-09}
13
13
  s.description = %q{It's time consuming to look up the URLs to your favorite javascript libraries and css
14
14
  frameworks every time you start a new project or need to upgrade to a new version. Static
15
15
  FM provides recipes and tasks to speed up the process so you can start using the latest now.
@@ -37,12 +37,11 @@ FM provides recipes and tasks to speed up the process so you can start using the
37
37
  "lib/static_fm/installer.rb",
38
38
  "lib/static_fm/tasks.rb",
39
39
  "lib/static_fm/tasks/static_fm.rake",
40
- "lib/static_fm/updater.rb",
41
40
  "spec/spec_helper.rb",
42
41
  "spec/static_fm/asset_spec.rb",
43
42
  "spec/static_fm/command_line_spec.rb",
44
43
  "spec/static_fm/installer_spec.rb",
45
- "spec/static_fm/integration_spec.rb",
44
+ "spec/static_fm/network_spec.rb",
46
45
  "spec/static_fm_spec.rb",
47
46
  "static_fm.gemspec"
48
47
  ]
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: static_fm
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ross Kaffenberger
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-09-06 00:00:00 -04:00
13
+ date: 2011-09-09 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -165,12 +165,11 @@ files:
165
165
  - lib/static_fm/installer.rb
166
166
  - lib/static_fm/tasks.rb
167
167
  - lib/static_fm/tasks/static_fm.rake
168
- - lib/static_fm/updater.rb
169
168
  - spec/spec_helper.rb
170
169
  - spec/static_fm/asset_spec.rb
171
170
  - spec/static_fm/command_line_spec.rb
172
171
  - spec/static_fm/installer_spec.rb
173
- - spec/static_fm/integration_spec.rb
172
+ - spec/static_fm/network_spec.rb
174
173
  - spec/static_fm_spec.rb
175
174
  - static_fm.gemspec
176
175
  has_rdoc: true
@@ -187,7 +186,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
186
  requirements:
188
187
  - - ">="
189
188
  - !ruby/object:Gem::Version
190
- hash: -2290096469839906185
189
+ hash: 2596875027417535980
191
190
  segments:
192
191
  - 0
193
192
  version: "0"
@@ -1,22 +0,0 @@
1
- module StaticFM
2
- class Updater
3
-
4
- def self.update!
5
- installer = new
6
- yield installer
7
- installer.update!
8
- end
9
-
10
- attr_accessor :url, :dir, :files
11
-
12
- def files
13
- @files ||= []
14
- end
15
-
16
- def update!
17
- @files.each do |file|
18
- system `wget #{File.join(@url, file)} -O#{File.join(@dir, file)}`
19
- end
20
- end
21
- end
22
- end
@@ -1,18 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe "StaticFM integration" do
4
-
5
- describe "downloads" do
6
- it "should download assets in static.yml" do
7
- pending
8
- StaticFM::Asset.config.each_pair do |asset_name, attributes|
9
- asset = StaticFM::Asset.find(asset_name)
10
- destination = "./spec/downloads/#{asset.basename}"
11
- StaticFM::Installer.new(asset, destination).download
12
- File.exist?(destination).should be_true
13
- File.size(destination).should > 128
14
- File.readlines(destination).should include(/backbone/i)
15
- end
16
- end
17
- end
18
- end