cotweet-fakeweb 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/.autotest +5 -0
  2. data/.gitignore +7 -0
  3. data/CHANGELOG +215 -0
  4. data/LICENSE.txt +19 -0
  5. data/README.rdoc +189 -0
  6. data/Rakefile +67 -0
  7. data/fakeweb.gemspec +126 -0
  8. data/lib/fake_web.rb +215 -0
  9. data/lib/fake_web/ext/net_http.rb +72 -0
  10. data/lib/fake_web/registry.rb +127 -0
  11. data/lib/fake_web/responder.rb +122 -0
  12. data/lib/fake_web/response.rb +10 -0
  13. data/lib/fake_web/stub_socket.rb +15 -0
  14. data/lib/fake_web/utility.rb +90 -0
  15. data/lib/fakeweb.rb +2 -0
  16. data/test/fixtures/google_response_from_curl +12 -0
  17. data/test/fixtures/google_response_with_transfer_encoding +17 -0
  18. data/test/fixtures/google_response_without_transfer_encoding +11 -0
  19. data/test/fixtures/test_example.txt +1 -0
  20. data/test/fixtures/test_txt_file +3 -0
  21. data/test/test_allow_net_connect.rb +168 -0
  22. data/test/test_deprecations.rb +54 -0
  23. data/test/test_fake_authentication.rb +92 -0
  24. data/test/test_fake_web.rb +590 -0
  25. data/test/test_fake_web_open_uri.rb +58 -0
  26. data/test/test_helper.rb +90 -0
  27. data/test/test_last_request.rb +29 -0
  28. data/test/test_missing_open_uri.rb +25 -0
  29. data/test/test_missing_pathname.rb +37 -0
  30. data/test/test_other_net_http_libraries.rb +36 -0
  31. data/test/test_precedence.rb +79 -0
  32. data/test/test_query_string.rb +45 -0
  33. data/test/test_regexes.rb +157 -0
  34. data/test/test_response_headers.rb +79 -0
  35. data/test/test_trailing_slashes.rb +53 -0
  36. data/test/test_utility.rb +83 -0
  37. data/test/vendor/right_http_connection-1.2.4/History.txt +59 -0
  38. data/test/vendor/right_http_connection-1.2.4/Manifest.txt +7 -0
  39. data/test/vendor/right_http_connection-1.2.4/README.txt +54 -0
  40. data/test/vendor/right_http_connection-1.2.4/Rakefile +103 -0
  41. data/test/vendor/right_http_connection-1.2.4/lib/net_fix.rb +160 -0
  42. data/test/vendor/right_http_connection-1.2.4/lib/right_http_connection.rb +435 -0
  43. data/test/vendor/right_http_connection-1.2.4/setup.rb +1585 -0
  44. data/test/vendor/samuel-0.2.1/.document +5 -0
  45. data/test/vendor/samuel-0.2.1/.gitignore +5 -0
  46. data/test/vendor/samuel-0.2.1/LICENSE +20 -0
  47. data/test/vendor/samuel-0.2.1/README.rdoc +70 -0
  48. data/test/vendor/samuel-0.2.1/Rakefile +62 -0
  49. data/test/vendor/samuel-0.2.1/VERSION +1 -0
  50. data/test/vendor/samuel-0.2.1/lib/samuel.rb +52 -0
  51. data/test/vendor/samuel-0.2.1/lib/samuel/net_http.rb +10 -0
  52. data/test/vendor/samuel-0.2.1/lib/samuel/request.rb +96 -0
  53. data/test/vendor/samuel-0.2.1/samuel.gemspec +69 -0
  54. data/test/vendor/samuel-0.2.1/test/request_test.rb +193 -0
  55. data/test/vendor/samuel-0.2.1/test/samuel_test.rb +42 -0
  56. data/test/vendor/samuel-0.2.1/test/test_helper.rb +66 -0
  57. data/test/vendor/samuel-0.2.1/test/thread_test.rb +32 -0
  58. metadata +167 -0
@@ -0,0 +1,79 @@
1
+ require 'test_helper'
2
+
3
+ class TestResponseHeaders < Test::Unit::TestCase
4
+ def test_content_type_when_registering_with_string_and_content_type_header_as_symbol_option
5
+ FakeWeb.register_uri(:get, "http://example.com/users.json", :body => '[{"username": "chrisk"}]', :content_type => "application/json")
6
+ response = Net::HTTP.start("example.com") { |query| query.get("/users.json") }
7
+ assert_equal '[{"username": "chrisk"}]', response.body
8
+ assert_equal "application/json", response['Content-Type']
9
+ end
10
+
11
+ def test_content_type_when_registering_with_string_and_content_type_header_as_string_option
12
+ FakeWeb.register_uri(:get, "http://example.com/users.json", :body => '[{"username": "chrisk"}]', 'Content-Type' => "application/json")
13
+ response = Net::HTTP.start("example.com") { |query| query.get("/users.json") }
14
+ assert_equal "application/json", response['Content-Type']
15
+ end
16
+
17
+ def test_content_type_when_registering_with_string_only
18
+ FakeWeb.register_uri(:get, "http://example.com/users.json", :body => '[{"username": "chrisk"}]')
19
+ response = Net::HTTP.start("example.com") { |query| query.get("/users.json") }
20
+ assert_equal '[{"username": "chrisk"}]', response.body
21
+ assert_nil response['Content-Type']
22
+ end
23
+
24
+ def test_cookies_when_registering_with_file_and_set_cookie_header
25
+ FakeWeb.register_uri(:get, "http://example.com/", :body => fixture_path("test_example.txt"),
26
+ :set_cookie => "user_id=1; example=yes")
27
+ response = Net::HTTP.start("example.com") { |query| query.get("/") }
28
+ assert_equal "test example content", response.body
29
+ assert_equal "user_id=1; example=yes", response['Set-Cookie']
30
+ end
31
+
32
+ def test_multiple_set_cookie_headers
33
+ FakeWeb.register_uri(:get, "http://example.com", :set_cookie => ["user_id=1", "example=yes"])
34
+ response = Net::HTTP.start("example.com") { |query| query.get("/") }
35
+ assert_equal ["user_id=1", "example=yes"], response.get_fields('Set-Cookie')
36
+ assert_equal "user_id=1, example=yes", response['Set-Cookie']
37
+ end
38
+
39
+ def test_registering_with_baked_response_ignores_header_options
40
+ fake_response = Net::HTTPOK.new('1.1', '200', 'OK')
41
+ fake_response["Server"] = "Apache/1.3.27 (Unix)"
42
+ FakeWeb.register_uri(:get, "http://example.com/", :response => fake_response,
43
+ :server => "FakeWeb/1.2.3 (Ruby)")
44
+ response = Net::HTTP.start("example.com") { |query| query.get("/") }
45
+ assert_equal "200", response.code
46
+ assert_equal "OK", response.message
47
+ assert_equal "Apache/1.3.27 (Unix)", response["Server"]
48
+ end
49
+
50
+ def test_headers_are_rotated_when_registering_with_response_rotation
51
+ FakeWeb.register_uri(:get, "http://example.com",
52
+ [{:body => 'test1', :expires => "Thu, 14 Jun 2009 16:00:00 GMT",
53
+ :content_type => "text/plain"},
54
+ {:body => 'test2', :expires => "Thu, 14 Jun 2009 16:00:01 GMT"}])
55
+
56
+ first_response = second_response = nil
57
+ Net::HTTP.start("example.com") do |query|
58
+ first_response = query.get("/")
59
+ second_response = query.get("/")
60
+ end
61
+ assert_equal 'test1', first_response.body
62
+ assert_equal "Thu, 14 Jun 2009 16:00:00 GMT", first_response['Expires']
63
+ assert_equal "text/plain", first_response['Content-Type']
64
+ assert_equal 'test2', second_response.body
65
+ assert_equal "Thu, 14 Jun 2009 16:00:01 GMT", second_response['Expires']
66
+ assert_nil second_response['Content-Type']
67
+ end
68
+
69
+ def test_registering_with_status_option_and_response_headers
70
+ FakeWeb.register_uri(:get, "http://example.com", :status => ["301", "Moved Permanently"],
71
+ :location => "http://www.example.com")
72
+
73
+ response = Net::HTTP.start("example.com") { |query| query.get("/") }
74
+ assert_equal "301", response.code
75
+ assert_equal "Moved Permanently", response.message
76
+ assert_equal "http://www.example.com", response["Location"]
77
+ end
78
+
79
+ end
@@ -0,0 +1,53 @@
1
+ require 'test_helper'
2
+
3
+ class TestFakeWebTrailingSlashes < Test::Unit::TestCase
4
+
5
+ def test_registering_root_without_slash_and_ask_predicate_method_with_slash
6
+ FakeWeb.register_uri(:get, "http://www.example.com", :body => "root")
7
+ assert FakeWeb.registered_uri?(:get, "http://www.example.com/")
8
+ end
9
+
10
+ def test_registering_root_without_slash_and_request
11
+ FakeWeb.register_uri(:get, "http://www.example.com", :body => "root")
12
+ response = Net::HTTP.start("www.example.com") { |query| query.get('/') }
13
+ assert_equal "root", response.body
14
+ end
15
+
16
+ def test_registering_root_with_slash_and_ask_predicate_method_without_slash
17
+ FakeWeb.register_uri(:get, "http://www.example.com/", :body => "root")
18
+ assert FakeWeb.registered_uri?(:get, "http://www.example.com")
19
+ end
20
+
21
+ def test_registering_root_with_slash_and_request
22
+ FakeWeb.register_uri(:get, "http://www.example.com/", :body => "root")
23
+ response = Net::HTTP.start("www.example.com") { |query| query.get('/') }
24
+ assert_equal "root", response.body
25
+ end
26
+
27
+ def test_registering_path_without_slash_and_ask_predicate_method_with_slash
28
+ FakeWeb.register_uri(:get, "http://www.example.com/users", :body => "User list")
29
+ assert !FakeWeb.registered_uri?(:get, "http://www.example.com/users/")
30
+ end
31
+
32
+ def test_registering_path_without_slash_and_request_with_slash
33
+ FakeWeb.allow_net_connect = false
34
+ FakeWeb.register_uri(:get, "http://www.example.com/users", :body => "User list")
35
+ assert_raise FakeWeb::NetConnectNotAllowedError do
36
+ response = Net::HTTP.start("www.example.com") { |query| query.get('/users/') }
37
+ end
38
+ end
39
+
40
+ def test_registering_path_with_slash_and_ask_predicate_method_without_slash
41
+ FakeWeb.register_uri(:get, "http://www.example.com/users/", :body => "User list")
42
+ assert !FakeWeb.registered_uri?(:get, "http://www.example.com/users")
43
+ end
44
+
45
+ def test_registering_path_with_slash_and_request_without_slash
46
+ FakeWeb.allow_net_connect = false
47
+ FakeWeb.register_uri(:get, "http://www.example.com/users/", :body => "User list")
48
+ assert_raise FakeWeb::NetConnectNotAllowedError do
49
+ response = Net::HTTP.start("www.example.com") { |query| query.get('/users') }
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,83 @@
1
+ require 'test_helper'
2
+
3
+ class TestUtility < Test::Unit::TestCase
4
+
5
+ def test_decode_userinfo_from_header_handles_basic_auth
6
+ authorization_header = "Basic dXNlcm5hbWU6c2VjcmV0"
7
+ userinfo = FakeWeb::Utility.decode_userinfo_from_header(authorization_header)
8
+ assert_equal "username:secret", userinfo
9
+ end
10
+
11
+ def test_encode_unsafe_chars_in_userinfo_does_not_encode_userinfo_safe_punctuation
12
+ userinfo = "user;&=+$,:secret"
13
+ assert_equal userinfo, FakeWeb::Utility.encode_unsafe_chars_in_userinfo(userinfo)
14
+ end
15
+
16
+ def test_encode_unsafe_chars_in_userinfo_does_not_encode_rfc_3986_unreserved_characters
17
+ userinfo = "-_.!~*'()abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:secret"
18
+ assert_equal userinfo, FakeWeb::Utility.encode_unsafe_chars_in_userinfo(userinfo)
19
+ end
20
+
21
+ def test_encode_unsafe_chars_in_userinfo_does_encode_other_characters
22
+ userinfo, safe_userinfo = 'us#rn@me:sec//ret?"', 'us%23rn%40me:sec%2F%2Fret%3F%22'
23
+ assert_equal safe_userinfo, FakeWeb::Utility.encode_unsafe_chars_in_userinfo(userinfo)
24
+ end
25
+
26
+ def test_strip_default_port_from_uri_strips_80_from_http_with_path
27
+ uri = "http://example.com:80/foo/bar"
28
+ stripped_uri = FakeWeb::Utility.strip_default_port_from_uri(uri)
29
+ assert_equal "http://example.com/foo/bar", stripped_uri
30
+ end
31
+
32
+ def test_strip_default_port_from_uri_strips_80_from_http_without_path
33
+ uri = "http://example.com:80"
34
+ stripped_uri = FakeWeb::Utility.strip_default_port_from_uri(uri)
35
+ assert_equal "http://example.com", stripped_uri
36
+ end
37
+
38
+ def test_strip_default_port_from_uri_strips_443_from_https_without_path
39
+ uri = "https://example.com:443"
40
+ stripped_uri = FakeWeb::Utility.strip_default_port_from_uri(uri)
41
+ assert_equal "https://example.com", stripped_uri
42
+ end
43
+
44
+ def test_strip_default_port_from_uri_strips_443_from_https
45
+ uri = "https://example.com:443/foo/bar"
46
+ stripped_uri = FakeWeb::Utility.strip_default_port_from_uri(uri)
47
+ assert_equal "https://example.com/foo/bar", stripped_uri
48
+ end
49
+
50
+ def test_strip_default_port_from_uri_does_not_strip_8080_from_http
51
+ uri = "http://example.com:8080/foo/bar"
52
+ assert_equal uri, FakeWeb::Utility.strip_default_port_from_uri(uri)
53
+ end
54
+
55
+ def test_strip_default_port_from_uri_does_not_strip_443_from_http
56
+ uri = "http://example.com:443/foo/bar"
57
+ assert_equal uri, FakeWeb::Utility.strip_default_port_from_uri(uri)
58
+ end
59
+
60
+ def test_strip_default_port_from_uri_does_not_strip_80_from_query_string
61
+ uri = "http://example.com/?a=:80&b=c"
62
+ assert_equal uri, FakeWeb::Utility.strip_default_port_from_uri(uri)
63
+ end
64
+
65
+ def test_strip_default_port_from_uri_does_not_modify_strings_that_do_not_start_with_http_or_https
66
+ uri = "httpz://example.com:80/"
67
+ assert_equal uri, FakeWeb::Utility.strip_default_port_from_uri(uri)
68
+ end
69
+
70
+ def test_request_uri_as_string
71
+ http = Net::HTTP.new("www.example.com", 80)
72
+ request = Net::HTTP::Get.new("/index.html")
73
+ expected = "http://www.example.com:80/index.html"
74
+ assert_equal expected, FakeWeb::Utility.request_uri_as_string(http, request)
75
+ end
76
+
77
+ def test_uri_escape_delegates_to_uri_parser_when_available
78
+ parsing_object = URI.const_defined?(:Parser) ? URI::Parser.any_instance : URI
79
+ parsing_object.expects(:escape).with("string", /unsafe/).returns("escaped")
80
+ assert_equal "escaped", FakeWeb::Utility.uri_escape("string", /unsafe/)
81
+ end
82
+
83
+ end
@@ -0,0 +1,59 @@
1
+ == 0.0.1 2007-05-15
2
+ * 1 major enhancement:
3
+ * Initial release
4
+
5
+ == 0.1.2 2007-06-27
6
+
7
+ * No major changes.
8
+
9
+ == 0.1.3 2007-07-09
10
+
11
+ * No change.
12
+
13
+ == 0.1.4 2007-08-10
14
+
15
+ * r1442, todd, 2007-08-07 15:45:24
16
+ * # 373, Add support in right_http_connection for bailing out to a block while
17
+ reading the HTTP response (to support GET streaming...)
18
+
19
+ * r1411, todd, 2007-08-03 15:14:45
20
+ * # 373, Stream uploads (PUTs) if the source is a file, stream, or anything
21
+ read()-able
22
+
23
+ == 1.1.0 2007-08-15
24
+ Initial public release
25
+
26
+ == 1.2.0 2007-10-05
27
+
28
+ * r1867, konstantin, 2007-10-05 06:19:45
29
+ * # 220, (re)open connection to server if none exists or connection params
30
+ have changed
31
+
32
+ == 1.2.1
33
+
34
+ * r2648, konstantin, 01-24-08 11:12:00
35
+ * net_fix.rb moved from right_aws gem to fix the problem with uploading the streamable
36
+ objects to S3
37
+
38
+ * r2764, konstantin, 02-08-08 00:05:00 +03:00
39
+ * "RightAws: incompatible Net::HTTP monkey-patch" exception is raised if our net_fix
40
+ patch was overriden (by attachment_fu for example, to avoid this load attachment_fu
41
+ before loading the right_http_connection gem).
42
+
43
+ == 1.2.2
44
+
45
+ * r3524, konstantin, 2008-04-17 11:35:42 +0400
46
+ * Fixed a problem with incorrect error handling (connection retries always failed).
47
+
48
+ == 1.2.3
49
+
50
+ - Added support for setting retry & timeout parameters in the constructor
51
+ - Improve handling of data streams during upload: if there is a failure and a retry, reset
52
+ the seek pointer for the subsequent re-request
53
+
54
+ == 1.2.4
55
+
56
+ * r4984, konstantin, 2008-08-11 14:49:18 +0400
57
+ * fixed a bug: <NoMethodError: You have a nil object when you didn't expect it!
58
+ The error occurred while evaluating nil.body_stream>
59
+
@@ -0,0 +1,7 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ lib/net_fix.rb
6
+ lib/right_http_connection.rb
7
+ setup.rb
@@ -0,0 +1,54 @@
1
+ RightScale::HttpConnection
2
+ by RightScale, Inc.
3
+ www.RightScale.com
4
+
5
+ == DESCRIPTION:
6
+
7
+ Rightscale::HttpConnection is a robust HTTP/S library. It implements a retry
8
+ algorithm for low-level network errors.
9
+
10
+ == FEATURES:
11
+
12
+ - provides put/get streaming
13
+ - does configurable retries on connect and read timeouts, DNS failures, etc.
14
+ - HTTPS certificate checking
15
+
16
+ == SYNOPSIS:
17
+
18
+
19
+ == REQUIREMENTS:
20
+
21
+ - 2/11/08: If you use RightScale::HttpConnection in conjunction with attachment_fu, the
22
+ HttpConnection gem must be included (using the require statement) AFTER
23
+ attachment_fu.
24
+ This is due to a conflict between the HttpConnection gem and another
25
+ gem required by attachment_fu.
26
+
27
+
28
+
29
+ == INSTALL:
30
+
31
+ sudo gem install right_http_connection
32
+
33
+ == LICENSE:
34
+
35
+ Copyright (c) 2007-2008 RightScale, Inc.
36
+
37
+ Permission is hereby granted, free of charge, to any person obtaining
38
+ a copy of this software and associated documentation files (the
39
+ 'Software'), to deal in the Software without restriction, including
40
+ without limitation the rights to use, copy, modify, merge, publish,
41
+ distribute, sublicense, and/or sell copies of the Software, and to
42
+ permit persons to whom the Software is furnished to do so, subject to
43
+ the following conditions:
44
+
45
+ The above copyright notice and this permission notice shall be
46
+ included in all copies or substantial portions of the Software.
47
+
48
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
49
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
50
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
51
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
52
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
53
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
54
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,103 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/clean'
4
+ require 'rake/testtask'
5
+ require 'rake/packagetask'
6
+ require 'rake/gempackagetask'
7
+ require 'rake/rdoctask'
8
+ require 'rake/contrib/rubyforgepublisher'
9
+ require 'fileutils'
10
+ require 'hoe'
11
+ include FileUtils
12
+ require File.join(File.dirname(__FILE__), 'lib', 'right_http_connection')
13
+
14
+ AUTHOR = 'RightScale' # can also be an array of Authors
15
+ EMAIL = "rubygems@rightscale.com"
16
+ DESCRIPTION = "RightScale's robust HTTP/S connection module"
17
+ GEM_NAME = 'right_http_connection' # what ppl will type to install your gem
18
+ RUBYFORGE_PROJECT = 'rightscale' # The unix name for your project
19
+ HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
20
+ DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
21
+
22
+ NAME = "right_http_connection"
23
+ REV = nil # UNCOMMENT IF REQUIRED: File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
24
+ VERS = RightHttpConnection::VERSION::STRING + (REV ? ".#{REV}" : "")
25
+ CLEAN.include ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store']
26
+ RDOC_OPTS = ['--quiet', '--title', 'right_http_connection documentation',
27
+ "--opname", "index.html",
28
+ "--line-numbers",
29
+ "--main", "README",
30
+ "--inline-source"]
31
+
32
+ # Suppress Hoe's self-inclusion as a dependency for our Gem. This also keeps
33
+ # Rake & rubyforge out of the dependency list. Users must manually install
34
+ # these gems to run tests, etc.
35
+ # TRB 2/19/09: also do this for the extra_dev_deps array present in newer hoes.
36
+ # Older versions of RubyGems will try to install developer-dependencies as
37
+ # required runtime dependencies....
38
+ class Hoe
39
+ def extra_deps
40
+ @extra_deps.reject do |x|
41
+ Array(x).first == 'hoe'
42
+ end
43
+ end
44
+ def extra_dev_deps
45
+ @extra_dev_deps.reject do |x|
46
+ Array(x).first == 'hoe'
47
+ end
48
+ end
49
+ end
50
+
51
+ # Generate all the Rake tasks
52
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
53
+ hoe = Hoe.new(GEM_NAME, VERS) do |p|
54
+ p.author = AUTHOR
55
+ p.description = DESCRIPTION
56
+ p.email = EMAIL
57
+ p.summary = DESCRIPTION
58
+ p.url = HOMEPATH
59
+ p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
60
+ p.test_globs = ["test/**/test_*.rb"]
61
+ p.clean_globs = CLEAN #An array of file patterns to delete on clean.
62
+ p.remote_rdoc_dir = "right_http_gem_doc"
63
+
64
+ # == Optional
65
+ p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
66
+ #p.extra_deps = [] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
67
+ #p.spec_extras = {} # A hash of extra values to set in the gemspec.
68
+ end
69
+
70
+
71
+ desc 'Generate website files'
72
+ task :website_generate do
73
+ Dir['website/**/*.txt'].each do |txt|
74
+ sh %{ ruby scripts/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
75
+ end
76
+ end
77
+
78
+ desc 'Upload website files to rubyforge'
79
+ task :website_upload do
80
+ config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
81
+ host = "#{config["username"]}@rubyforge.org"
82
+ remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/"
83
+ # remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
84
+ local_dir = 'website'
85
+ sh %{rsync -av #{local_dir}/ #{host}:#{remote_dir}}
86
+ end
87
+
88
+ desc 'Generate and upload website files'
89
+ task :website => [:website_generate, :website_upload]
90
+
91
+ desc 'Release the website and new gem version'
92
+ task :deploy => [:check_version, :website, :release]
93
+
94
+ task :check_version do
95
+ unless ENV['VERSION']
96
+ puts 'Must pass a VERSION=x.y.z release version'
97
+ exit
98
+ end
99
+ unless ENV['VERSION'] == VERS
100
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
101
+ exit
102
+ end
103
+ end