haikulearning_mongrel_upload_progress 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ v0.2.4. Changed the way UploadProgressConfig behaves. It now looks for a single mongrel_upload_progress.yml file with multiple environment configs set inside (much like database.yml in Rails). It also raises a NoConfigSpecified error if config there's a
2
+ problem loading the relevant configuration.
3
+
1
4
  v0.2.3. Haiku Learning Systems modifications. The path_info Array now matches using === allowing for Regexp and other creative path matchers. Adding UploadProgressConfig to support different configurations for different environments.
2
5
 
3
6
  v0.2.2. Signed gem.
@@ -5,3 +5,104 @@ A mongrel plugin that makes it possible to check the progress of in-transit uplo
5
5
  == Haiku Learning Systems Modifications
6
6
 
7
7
  This fork of the {original mongrel_upload_progress gem}[http://rubygems.org/gems/mongrel_upload_progress] has been modified by {Haiku Learning Systems}[http://www.haikulearning.com] to add a few features. Please read the CHANGELOG for more details about these changes.
8
+
9
+ This plugin works as a *drop in replacement* for mongrel_upload_progress, though we *strongly suggest* you only have one or the other installed. We haven't tested the interaction between the two & make no guarantees that they will play well together.
10
+
11
+ = Mongrel Configuration
12
+
13
+ Place the following code somewhere in your code (e.g. <tt>config/mongrel_upload_progress.conf</tt>).
14
+
15
+ uri("/",
16
+ :handler => plugin(
17
+ "/handlers/upload",
18
+ Mongrel::UploadProgressConfig.options(File.join(RAILS_ROOT, 'config'))
19
+ ),
20
+ :in_front => true
21
+ )
22
+
23
+ Because, we're using Mongrel::UploadProgressConfig above, create a <tt>mongrel_upload_progress.yml</tt> file within the appropriate dir (within <tt>File.join(RAILS_ROOT, 'config')</tt> in the above example). The following
24
+ is one example. Note: You'll need to specify a configuration for each environment
25
+ you plan to use in your Application.
26
+
27
+ development: &_defaults
28
+ :path_info :
29
+ - /upload/file # Handles UploadController#file
30
+ - !ruby/regexp /^\/file\/upload.*/ # Handles any upload* action in FileController
31
+ :debug : true
32
+ # Use the development settings, but override the :debug option.
33
+ production:
34
+ <<: *_defaults
35
+ :debug : false
36
+
37
+ Then reference the conf file when you start your mongrel(s)
38
+
39
+ mongrel_rails start -e development -S config/mongrel_upload_progress.conf
40
+
41
+ = Using DRb
42
+
43
+ A very useful feature if you're running more than one mongrel process, even across multiple servers.
44
+
45
+ == DRb Configuration
46
+
47
+ Update your <tt>mongrel_upload_progress.yml</tt> setting by adding DRb information.
48
+
49
+ production:
50
+ <<: *_defaults
51
+ :drb : druby://127.0.0.1:7999 # A single-server setup. Specify an IP or hostname other than loopback for multiple server setups.
52
+
53
+ == DRb Server
54
+
55
+ Now, start up a DRb server. Here's an example ruby script.
56
+
57
+ require 'rubygems'
58
+ require 'drb'
59
+ require 'gem_plugin'
60
+
61
+ RAILS_ENV = ENV['RAILS_ENV'] || 'development'
62
+ config_dir = File.join(File.dirname(__FILE__), '../config')
63
+
64
+ GemPlugin::Manager.instance.load 'mongrel' => GemPlugin::INCLUDE
65
+ DRb.start_service(
66
+ Mongrel::UploadProgressConfig.options(config_dir)[:drb],
67
+ Mongrel::UploadProgress.new
68
+ )
69
+ DRb.thread.join
70
+
71
+ Start the above server with this command:
72
+
73
+ RAILS_ENV=production ruby path/to/above_script.rb &
74
+
75
+ == DRb in IRB
76
+
77
+ For debugging purposes, you can interact with your DRb server using the following IRB script
78
+
79
+ require 'rubygems'
80
+ require 'drb'
81
+ require 'gem_plugin'
82
+
83
+ RAILS_ENV = ENV['RAILS_ENV'] || 'development'
84
+
85
+ GemPlugin::Manager.instance.load 'mongrel' => GemPlugin::INCLUDE
86
+ DRb.start_service
87
+
88
+ def list
89
+ updrb.list
90
+ end
91
+ def updrb
92
+ @updrb ||= DRbObject.new(nil,
93
+ Mongrel::UploadProgressConfig.options(File.join(File.dirname(__FILE__), '../config'))[:drb]
94
+ )
95
+ end
96
+ def reload_updrb
97
+ @updrb = nil
98
+ updrb
99
+ end
100
+
101
+ Then interact with IRB as follows:
102
+
103
+ $ RAILS_ENV=production irb -r path/to/above_script.rb
104
+ > list #=> []
105
+ # After an upload starts...
106
+ > list #=> ['1299607166']
107
+ # You can call any Mongrel::UploadProgress method as well
108
+ > updrb.check('1299607166') #=> {:received=>1024, :size=>56332114}
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{haikulearning_mongrel_upload_progress}
5
- s.version = "0.2.3"
5
+ s.version = "0.2.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["The Mongrel team, with modifications by Marcos Wright Kuhns"]
9
- s.date = %q{2011-03-07}
9
+ s.date = %q{2011-03-08}
10
10
  s.description = %q{The haikulearning fork of the mongrel_upload_progress gemplugin}
11
11
  s.email = %q{}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "COPYING", "LICENSE", "README.rdoc", "lib/haikulearning_mongrel_upload_progress/init.rb"]
@@ -90,15 +90,25 @@ class Mongrel::UploadProgress
90
90
  end
91
91
  end
92
92
 
93
- class Mongrel::UploadProgressConfig
94
- class<<self
93
+ module Mongrel::UploadProgressConfig
94
+ class << self
95
95
  def options(root_dir)
96
- case ::RAILS_ENV
97
- when 'production'
98
- YAML.load_file(File.join(root_dir, 'config/mongrel_upload_progress_prod.yml'))
99
- else
100
- YAML.load_file(File.join(root_dir, 'config/mongrel_upload_progress_dev.yml'))
96
+ opts = YAML.load_file(File.join(root_dir, 'mongrel_upload_progress.yml')) rescue nil
97
+ raise NoConfigSpecified.new("No config file exists at #{File.join(root_dir, 'config/mongrel_upload_progress.yml').inspect}") if opts.nil? || opts.empty?
98
+
99
+ begin
100
+ ::RAILS_ENV
101
+ rescue
102
+ raise NoConfigSpecified.new("The ::RAILS_ENV constant must be set (Sorry, no Rails 3 support yet.)")
101
103
  end
104
+
105
+ opts = opts[::RAILS_ENV] rescue nil
106
+ raise NoConfigSpecified.new("No config information exists for the #{::RAILS_ENV} environment.") if opts.nil? || opts.empty?
107
+
108
+ opts
102
109
  end
103
110
  end
104
- end
111
+
112
+ class NoConfigSpecified < ::RuntimeError
113
+ end
114
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haikulearning_mongrel_upload_progress
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 3
10
- version: 0.2.3
9
+ - 4
10
+ version: 0.2.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - The Mongrel team, with modifications by Marcos Wright Kuhns
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-07 00:00:00 -08:00
18
+ date: 2011-03-08 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency