capistrano-file-resources 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,6 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.version = Capistrano::Configuration::Resources::FileResources::VERSION
17
17
 
18
18
  gem.add_dependency("capistrano")
19
+ gem.add_dependency("mime-types")
19
20
  gem.add_development_dependency("net-scp", "~> 1.0.4")
20
21
  gem.add_development_dependency("net-ssh", "~> 2.2.2")
21
22
  gem.add_development_dependency("vagrant", "~> 1.0.6")
@@ -1,26 +1,37 @@
1
1
  require "capistrano/configuration/resources/file_resources/version"
2
2
  require "capistrano/configuration"
3
3
  require "erb"
4
+ require "mime/types"
4
5
 
5
6
  module Capistrano
6
7
  class Configuration
7
8
  module Resources
8
9
  module FileResources
9
10
  def file(name, options={})
10
- path = options.fetch(:path, ".")
11
+ options = options.dup
12
+ path = ( options.delete(:path) || "." )
11
13
  begin
12
- File.read(File.join(path, name))
14
+ File.read(File.join(path, name), options)
13
15
  rescue SystemCallError => error
14
16
  abort("Could not render file resource - #{error}")
15
17
  end
16
18
  end
17
19
 
18
20
  def template(name, options={})
19
- path = options.fetch(:path, ".")
20
- name = "#{name}.erb" if File.exist?(File.join(path, "#{name}.erb"))
21
- data = file(name, options)
21
+ path = options.fetch(:path, "." )
22
+ if File.exist?(File.join(path, "#{name}.erb"))
23
+ name = "#{name}.erb"
24
+ else
25
+ types = MIME::Types.type_for(name)
26
+ if types.include?("text/html")
27
+ name_without_ext = File.basename(name, File.extname(name))
28
+ if File.exist?(File.join(path, "#{name_without_ext}.rhtml"))
29
+ name = "#{name_without_ext}.rhtml"
30
+ end
31
+ end
32
+ end
22
33
  begin
23
- ERB.new(data).result(binding)
34
+ ERB.new(file(name, options)).result(options.fetch(:binding, binding))
24
35
  rescue StandardError => error
25
36
  abort("Could not render template resource - #{error}")
26
37
  end
@@ -2,7 +2,7 @@ module Capistrano
2
2
  class Configuration
3
3
  module Resources
4
4
  module FileResources
5
- VERSION = "0.1.0"
5
+ VERSION = "0.1.1"
6
6
  end
7
7
  end
8
8
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  bundle exec vagrant up
4
4
  bundle exec cap test_all
5
- bundle exec vagrant destroy -f
5
+ bundle exec vagrant halt
6
6
 
7
7
  # vim:set ft=sh :
@@ -16,21 +16,32 @@ role :db, "192.168.33.10", :primary => true
16
16
 
17
17
  $LOAD_PATH.push(File.expand_path("../../lib", File.dirname(__FILE__)))
18
18
  require "capistrano/configuration/resources/file_resources"
19
- require "stringio"
19
+ require "tempfile"
20
20
 
21
21
  task(:test_all) {
22
22
  find_and_execute_task("test_default")
23
23
  }
24
24
 
25
- def assert_equals(x, y)
26
- abort("assert_equals(#{x.dump}, #{y.dump}) failed.") unless x == y
25
+ def assert_equals(x, y, options={})
26
+ begin
27
+ raise if x != y
28
+ rescue
29
+ logger.debug("assert_equals(#{x.dump}, #{y.dump}) failed.")
30
+ raise
31
+ end
27
32
  end
28
33
 
29
- def assert_raises(error)
34
+ def assert_raises(error, options={})
30
35
  begin
31
36
  yield
32
37
  rescue error => e
33
- logger.debug("assert_raises: expected exception: #{e}")
38
+ raised = e
39
+ ensure
40
+ if raised
41
+ logger.debug("assert_raises(#{error}) expected exception: #{raised}")
42
+ else
43
+ raise("assert raises(#{error}) failed.")
44
+ end
34
45
  end
35
46
  end
36
47
 
@@ -54,42 +65,56 @@ namespace(:test_default) {
54
65
  }
55
66
 
56
67
  task(:test_file) {
57
- run_locally("rm -f tmp/foo; echo foo > tmp/foo")
58
- assert_equals("foo\n", file("foo", :path => "tmp"))
68
+ run_locally("rm -rf tmp; mkdir tmp")
69
+ File.write("tmp/foo", "foo")
70
+ assert_equals(file("foo", :path => "tmp"), "foo")
59
71
  }
60
72
 
61
73
  task(:test_missing_file) {
62
- run_locally("rm -f tmp/foo")
74
+ run_locally("rm -rf tmp; mkdir tmp")
63
75
  assert_raises(SystemExit) do
64
76
  file("foo", :path => "tmp")
65
77
  end
66
78
  }
67
79
 
68
80
  task(:test_file_with_suffix) {
69
- run_locally("rm -f tmp/foo tmp/foo.erb; echo foo > tmp/foo; echo foo.erb > tmp/foo.erb")
70
- assert_equals("foo\n", file("foo", :path => "tmp"))
81
+ run_locally("rm -rf tmp; mkdir tmp")
82
+ File.write("tmp/foo", "foo")
83
+ File.write("tmp/foo.erb", "foo.erb")
84
+ assert_equals(file("foo", :path => "tmp"), "foo")
85
+
71
86
  }
72
87
 
73
88
  task(:test_template) {
74
- run_locally("rm -f tmp/bar; echo bar > tmp/bar")
75
- assert_equals("bar\n", template("bar", :path => "tmp"))
89
+ run_locally("rm -rf tmp; mkdir tmp")
90
+ File.write("tmp/bar", "bar")
91
+ assert_equals(template("bar", :path => "tmp"), "bar")
76
92
  }
77
93
 
78
94
  task(:test_missing_template) {
79
- run_locally("rm -f tmp/bar")
95
+ run_locally("rm -rf tmp; mkdir tmp")
80
96
  assert_raises(SystemExit) do
81
97
  template("bar", :path => "tmp")
82
98
  end
83
99
  }
84
100
 
85
101
  task(:test_template_with_suffix) {
86
- run_locally("rm -f tmp/bar tmp/bar.erb; echo bar > tmp/bar; echo bar.erb > tmp/bar.erb")
87
- assert_equals("bar.erb\n", template("bar", :path => "tmp"))
102
+ run_locally("rm -rf tmp; mkdir tmp")
103
+ File.write("tmp/bar", "bar")
104
+ File.write("tmp/bar.erb", "bar.erb")
105
+ assert_equals(template("bar", :path => "tmp"), "bar.erb")
106
+ }
107
+
108
+ task(:test_template_with_suffix_rhtml) {
109
+ run_locally("rm -rf tmp; mkdir tmp")
110
+ File.write("tmp/bar.rhtml", "bar.rhtml")
111
+ assert_equals(template("bar.html", :path => "tmp"), "bar.rhtml")
88
112
  }
89
113
 
90
114
  task(:test_template_rendering) {
115
+ run_locally("rm -rf tmp; mkdir tmp")
91
116
  File.write("tmp/baz.erb", %q{<%= "baz" %>})
92
- assert_equals("baz", template("baz", :path => "tmp"))
117
+ assert_equals(template("baz", :path => "tmp"), "baz")
93
118
  }
94
119
  }
95
120
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  bundle exec vagrant up
4
4
  bundle exec cap test_all
5
- bundle exec vagrant destroy -f
5
+ bundle exec vagrant halt
6
6
 
7
7
  # vim:set ft=sh :
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-file-resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-14 00:00:00.000000000 Z
12
+ date: 2013-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: mime-types
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: net-scp
32
48
  requirement: !ruby/object:Gem::Requirement