zuk-picnic 0.7.999.20090212 → 0.8.0.20090318

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/History.txt CHANGED
@@ -1,3 +1,13 @@
1
+ === 0.8.0 :: 2009-03-18
2
+
3
+ * Overhauled for Camping 2.0. Major changes throughout. Some things to
4
+ watch out for:
5
+ * Your app's bin script should now specify :app_file instead of :app_path,
6
+ and :app_file should point to your Camping app's main .rb file.
7
+ * Postamples for Mongrel and WEBrick are gone, since everything is now
8
+ handled by Rack. It is also now possible to run Picnic apps on Phusion
9
+ Passenger (mod_rails/mod_rack).
10
+
1
11
  === 0.7.1 :: 2008-11-10
2
12
 
3
13
  * Fixed config file loading problems rooted in $APP_PATH inconsistencies.
data/Manifest.txt CHANGED
@@ -9,21 +9,38 @@ lib/picnic/authentication.rb
9
9
  lib/picnic/cli.rb
10
10
  lib/picnic/conf.rb
11
11
  lib/picnic/controllers.rb
12
- lib/picnic/postambles.rb
12
+ lib/picnic/logger.rb
13
+ lib/picnic/server.rb
13
14
  lib/picnic/service_control.rb
14
- lib/picnic/utils.rb
15
15
  lib/picnic/version.rb
16
+ picnic.gemspec
16
17
  setup.rb
17
18
  test/picnic_test.rb
18
19
  test/test_helper.rb
19
- vendor/camping-1.5.180/CHANGELOG
20
- vendor/camping-1.5.180/COPYING
21
- vendor/camping-1.5.180/README
22
- vendor/camping-1.5.180/Rakefile
23
- vendor/camping-1.5.180/lib/camping-unabridged.rb
24
- vendor/camping-1.5.180/lib/camping.rb
25
- vendor/camping-1.5.180/lib/camping/db.rb
26
- vendor/camping-1.5.180/lib/camping/fastcgi.rb
27
- vendor/camping-1.5.180/lib/camping/reloader.rb
28
- vendor/camping-1.5.180/lib/camping/session.rb
29
- vendor/camping-1.5.180/lib/camping/webrick.rb
20
+ vendor/camping-2.0.20090212/CHANGELOG
21
+ vendor/camping-2.0.20090212/COPYING
22
+ vendor/camping-2.0.20090212/README
23
+ vendor/camping-2.0.20090212/Rakefile
24
+ vendor/camping-2.0.20090212/bin/camping
25
+ vendor/camping-2.0.20090212/doc/camping.1.gz
26
+ vendor/camping-2.0.20090212/examples/README
27
+ vendor/camping-2.0.20090212/examples/blog.rb
28
+ vendor/camping-2.0.20090212/examples/campsh.rb
29
+ vendor/camping-2.0.20090212/examples/tepee.rb
30
+ vendor/camping-2.0.20090212/extras/Camping.gif
31
+ vendor/camping-2.0.20090212/extras/flipbook_rdoc.rb
32
+ vendor/camping-2.0.20090212/extras/permalink.gif
33
+ vendor/camping-2.0.20090212/lib/camping-unabridged.rb
34
+ vendor/camping-2.0.20090212/lib/camping.rb
35
+ vendor/camping-2.0.20090212/lib/camping/ar.rb
36
+ vendor/camping-2.0.20090212/lib/camping/ar/session.rb
37
+ vendor/camping-2.0.20090212/lib/camping/mab.rb
38
+ vendor/camping-2.0.20090212/lib/camping/reloader.rb
39
+ vendor/camping-2.0.20090212/lib/camping/server.rb
40
+ vendor/camping-2.0.20090212/lib/camping/session.rb
41
+ vendor/camping-2.0.20090212/setup.rb
42
+ vendor/camping-2.0.20090212/test/apps/env_debug.rb
43
+ vendor/camping-2.0.20090212/test/apps/forms.rb
44
+ vendor/camping-2.0.20090212/test/apps/misc.rb
45
+ vendor/camping-2.0.20090212/test/apps/sessions.rb
46
+ vendor/camping-2.0.20090212/test/test_camping.rb
data/Rakefile CHANGED
@@ -22,6 +22,7 @@ ENV['NODOT'] = '1'
22
22
 
23
23
  NAME = "picnic"
24
24
  REV = nil
25
+ #REV = Time.now.strftime('%Y%m%d%H%M')
25
26
  #REV = `svn info`[/Revision: (\d+)/, 1] rescue nil
26
27
  VERS = ENV['VERSION'] || (Picnic::VERSION::STRING + (REV ? ".#{REV}" : ""))
27
28
  CLEAN.include ['**/.*.sw?', '*.gem', '.config']
@@ -56,6 +57,7 @@ hoe = Hoe.new(GEM_NAME, VERS) do |p|
56
57
 
57
58
  # note that camping-1.5.0.180 is now bundled with picnic in the vendor directory.
58
59
  p.extra_deps = [
60
+ 'rack',
59
61
  'markaby',
60
62
  'activesupport'
61
63
  ]
@@ -3,6 +3,42 @@ module Picnic #:nodoc:
3
3
  # for your Camping app.
4
4
  #
5
5
  module Authentication
6
+
7
+ def self.included(base)
8
+ base.module_eval do
9
+ # Enable authentication for your app.
10
+ #
11
+ # For example:
12
+ #
13
+ # Camping.goes :Blog
14
+ # Blog.picnic!
15
+ #
16
+ # $CONF[:authentication] ||= {:username => 'admin', :password => 'picnic'}
17
+ # Blog.authenticate_using :basic
18
+ #
19
+ # module Blog
20
+ # def self.authenticate(credentials)
21
+ # credentials[:username] == Taskr::Conf[:authentication][:username] &&
22
+ # credentials[:password] == Taskr::Conf[:authentication][:password]
23
+ # end
24
+ # end
25
+ #
26
+ # Note that in the above example we use the authentication configuration from
27
+ # your app's conf file.
28
+ #
29
+ def authenticate_using(mod)
30
+ mod = Picnic::Authentication.const_get(mod.to_s.camelize) unless mod.kind_of? Module
31
+
32
+ $LOG.info("Enabling authentication for all requests using #{mod.inspect}.")
33
+
34
+ module_eval do
35
+ include mod
36
+ end
37
+ end
38
+ module_function :authenticate_using
39
+ end
40
+ end
41
+
6
42
  # Picnic::Authentication::Basic provides Basic HTTP Authentication for your Camping app.
7
43
  # The module defines a <tt>service</tt> method that only continues the request chain when
8
44
  # proper credentials are provided by the client (browser).
@@ -50,7 +86,7 @@ module Picnic #:nodoc:
50
86
  # Reads the username and password from the headers and returns them.
51
87
  def read_credentials
52
88
  if d = %w{REDIRECT_X_HTTP_AUTHORIZATION X-HTTP_AUTHORIZATION HTTP_AUTHORIZATION}.inject([]) \
53
- { |d,h| env.has_key?(h) ? env[h].to_s.split : d }
89
+ { |d,h| @env.has_key?(h) ? @env[h].to_s.split : d }
54
90
  u,p = ::Base64.decode64(d[1]).split(':')[0..1] if d[0] == 'Basic'
55
91
  return {:username => u, :password => p}
56
92
  end
@@ -68,9 +104,9 @@ module Picnic #:nodoc:
68
104
  s = super(*a)
69
105
  else
70
106
  @status = 401
71
- @headers['Content-type'] = @headers['Content-type'] || 'text/plain'
72
- @headers['Status'] = 'Unauthorized'
73
- @headers['WWW-Authenticate'] = "Basic realm=\"#{app}\""
107
+ headers['Content-type'] = @headers['Content-type'] || 'text/plain'
108
+ #headers['Status'] = 'Unauthorized'
109
+ headers['WWW-Authenticate'] = "Basic realm=\"#{app}\""
74
110
  @body = 'Unauthorized'
75
111
  s = self
76
112
  end
data/lib/picnic/cli.rb CHANGED
@@ -19,7 +19,7 @@ module Picnic
19
19
  #
20
20
  # cli = Picnic::Cli.new(
21
21
  # 'foo',
22
- # :app_path => "/path/to/foo.br"
22
+ # :app_file => "/path/to/foo.br"
23
23
  # )
24
24
  #
25
25
  # cli.handle_cli_input
@@ -44,7 +44,7 @@ module Picnic
44
44
  @app = app
45
45
 
46
46
  @options = options || {}
47
- @options[:app_file] ||= File.expand_path(File.dirname(File.expand_path($0))+"/../lib/#{app}.rb")
47
+ @options[:app_file] ||= File.expand_path(File.dirname(File.expand_path(__FILE__))+"/../lib/#{app}.rb")
48
48
  @options[:app_name] ||= app
49
49
  @options[:app_module] ||= app.capitalize
50
50
  @options[:pid_file] ||= "/etc/#{app}/#{app}.pid"
@@ -53,22 +53,29 @@ module Picnic
53
53
 
54
54
  # Parses command line options given to the script.
55
55
  def handle_cli_input
56
- if File.exists? options[:app_file]
56
+ # if File.exists? options[:app_file]
57
57
  # try to use given app base path
58
58
  $APP_ROOT = File.dirname(options[:app_file]).gsub(/\/(lib|bin)\/?$/, '')
59
- else
60
- require 'rubygems'
61
-
62
- # fall back to using gem installation
63
- matches = Gem::source_index.find_name(app)
64
- raise LoadError, "#{app} gem doesn't appear to be installed!" if matches.empty?
65
-
66
- gem_spec = matches.last
67
- $APP_ROOT = gem_spec.full_gem_path
68
-
69
- gem(app)
59
+ # else
60
+ # require 'rubygems'
61
+ #
62
+ # # fall back to using gem installation
63
+ # matches = Gem::source_index.find_name(app)
64
+ # raise LoadError, "#{app} gem doesn't appear to be installed!" if matches.empty?
65
+ #
66
+ # gem_spec = matches.last
67
+ # $APP_ROOT = gem_spec.full_gem_path
68
+ #
69
+ # gem(app)
70
+ # end
71
+
72
+ unless File.file?(options[:app_file])
73
+ raise ArgumentError, "options[:app_file] points to #{options[:app_file].inspect} but this does not appear to be a valid Camping application!}"
70
74
  end
71
75
 
76
+
77
+ puts "Loading #{app.inspect} code from #{$APP_ROOT.inspect}..."
78
+
72
79
  $: << $APP_ROOT+"/lib"
73
80
 
74
81
  $PID_FILE = @options[:pid_file]
@@ -76,11 +83,9 @@ module Picnic
76
83
  $VERBOSE = @options[:verbose]
77
84
 
78
85
  opts = OptionParser.new do |opts|
79
- opts.banner = "Usage: #{File.basename($0)} app.rb"
80
- opts.define_head "#{File.basename($0)}, the microframework ON-button for ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
81
- opts.separator ""
82
- opts.separator "Application options:"
83
-
86
+ #opts.banner = ""
87
+ #opts.define_head ""
88
+ #opts.separator ""
84
89
  opts.on("-d", "--daemonize", "Run daemonized in the background") do
85
90
  $DAEMONIZE = true
86
91
  end
@@ -106,9 +111,6 @@ module Picnic
106
111
  @options[:extra_cli_options].call(opts)
107
112
  end
108
113
 
109
- opts.separator ""
110
- opts.separator "Picnic options:"
111
-
112
114
  # No argument, shows at tail. This will print an options summary.
113
115
  # Try it and see!
114
116
  opts.on_tail("-h", "--help", "Show this message") do
@@ -146,14 +148,12 @@ module Picnic
146
148
  Dir.chdir $APP_ROOT
147
149
  File.umask 0000
148
150
 
149
- STDIN.reopen "/dev/null"
150
- STDOUT.reopen "/dev/null", "a"
151
- STDERR.reopen "/dev/null", "a"
151
+ STDIN.reopen $CONF.log[:file], "a"
152
+ STDOUT.reopen $CONF.log[:file], "a"
153
+ STDERR.reopen $CONF.log[:file], "a"
152
154
 
153
- if $PID_FILE
154
- File.open($PID_FILE, 'w'){ |f| f.write("#{Process.pid}") }
155
- at_exit { File.delete($PID_FILE) if File.exist?($PID_FILE) }
156
- end
155
+ File.open($PID_FILE, 'w'){ |f| f.write("#{Process.pid}") }
156
+ at_exit { File.delete($PID_FILE) if File.exist?($PID_FILE) }
157
157
  end
158
158
 
159
159
  server = Picnic::Server::Base.new($CONF, [options[:app_file]])
data/lib/picnic/server.rb CHANGED
@@ -20,6 +20,7 @@ module Picnic::Server
20
20
  rapp = Rack::URLMap.new(@conf.uri_path => rapp)
21
21
  end
22
22
 
23
+ rapp = Rack::Static.new(rapp, @conf[:static]) if @conf[:static]
23
24
  rapp = Rack::ContentLength.new(rapp)
24
25
  rapp = FixContentLength.new(rapp)
25
26
  rapp = Rack::Lint.new(rapp)
@@ -1,8 +1,8 @@
1
1
  module Picnic #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 7
5
- TINY = 999
4
+ MINOR = 8
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/picnic.rb CHANGED
@@ -8,41 +8,4 @@ require "camping"
8
8
 
9
9
 
10
10
  module Picnic
11
-
12
- def self.included(base)
13
- base.mod_eval do
14
- # Enable authentication for your app.
15
- #
16
- # For example:
17
- #
18
- # Camping.goes :Blog
19
- # Blog.picnic!
20
- #
21
- # $CONF[:authentication] ||= {:username => 'admin', :password => 'picnic'}
22
- # Blog.authenticate_using :basic
23
- #
24
- # module Blog
25
- # def self.authenticate(credentials)
26
- # credentials[:username] == Taskr::Conf[:authentication][:username] &&
27
- # credentials[:password] == Taskr::Conf[:authentication][:password]
28
- # end
29
- # end
30
- #
31
- # Note that in the above example we use the authentication configuration from
32
- # your app's conf file.
33
- #
34
- def authenticate_using(mod)
35
- load "picnic/authentication.rb"
36
- mod = self::Authentication.const_get(mod.to_s.camelize) unless mod.kind_of? Module
37
-
38
- $LOG.info("Enabling authentication for all requests using #{mod.inspect}.")
39
-
40
- module_eval do
41
- include mod
42
- end
43
- end
44
- module_function :authenticate_using
45
- end
46
- end
47
-
48
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuk-picnic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.999.20090212
4
+ version: 0.8.0.20090318
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zukowski
@@ -9,11 +9,22 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-12 00:00:00 -08:00
12
+ date: 2009-03-18 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rack
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
15
25
  - !ruby/object:Gem::Dependency
16
26
  name: markaby
27
+ type: :runtime
17
28
  version_requirement:
18
29
  version_requirements: !ruby/object:Gem::Requirement
19
30
  requirements:
@@ -23,6 +34,7 @@ dependencies:
23
34
  version:
24
35
  - !ruby/object:Gem::Dependency
25
36
  name: activesupport
37
+ type: :runtime
26
38
  version_requirement:
27
39
  version_requirements: !ruby/object:Gem::Requirement
28
40
  requirements:
@@ -32,6 +44,7 @@ dependencies:
32
44
  version:
33
45
  - !ruby/object:Gem::Dependency
34
46
  name: hoe
47
+ type: :development
35
48
  version_requirement:
36
49
  version_requirements: !ruby/object:Gem::Requirement
37
50
  requirements: