zuk-picnic 0.7.999.20090212

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.
Files changed (46) hide show
  1. data/CHANGELOG.txt +1 -0
  2. data/History.txt +68 -0
  3. data/LICENSE.txt +165 -0
  4. data/Manifest.txt +29 -0
  5. data/README.txt +31 -0
  6. data/Rakefile +62 -0
  7. data/lib/picnic/authentication.rb +218 -0
  8. data/lib/picnic/cli.rb +165 -0
  9. data/lib/picnic/conf.rb +135 -0
  10. data/lib/picnic/controllers.rb +4 -0
  11. data/lib/picnic/logger.rb +41 -0
  12. data/lib/picnic/server.rb +98 -0
  13. data/lib/picnic/service_control.rb +274 -0
  14. data/lib/picnic/version.rb +9 -0
  15. data/lib/picnic.rb +48 -0
  16. data/setup.rb +1585 -0
  17. data/test/picnic_test.rb +11 -0
  18. data/test/test_helper.rb +2 -0
  19. data/vendor/camping-2.0.20090212/CHANGELOG +118 -0
  20. data/vendor/camping-2.0.20090212/COPYING +18 -0
  21. data/vendor/camping-2.0.20090212/README +119 -0
  22. data/vendor/camping-2.0.20090212/Rakefile +174 -0
  23. data/vendor/camping-2.0.20090212/bin/camping +99 -0
  24. data/vendor/camping-2.0.20090212/doc/camping.1.gz +0 -0
  25. data/vendor/camping-2.0.20090212/examples/README +5 -0
  26. data/vendor/camping-2.0.20090212/examples/blog.rb +375 -0
  27. data/vendor/camping-2.0.20090212/examples/campsh.rb +629 -0
  28. data/vendor/camping-2.0.20090212/examples/tepee.rb +242 -0
  29. data/vendor/camping-2.0.20090212/extras/Camping.gif +0 -0
  30. data/vendor/camping-2.0.20090212/extras/flipbook_rdoc.rb +491 -0
  31. data/vendor/camping-2.0.20090212/extras/permalink.gif +0 -0
  32. data/vendor/camping-2.0.20090212/lib/camping/ar/session.rb +132 -0
  33. data/vendor/camping-2.0.20090212/lib/camping/ar.rb +78 -0
  34. data/vendor/camping-2.0.20090212/lib/camping/mab.rb +26 -0
  35. data/vendor/camping-2.0.20090212/lib/camping/reloader.rb +163 -0
  36. data/vendor/camping-2.0.20090212/lib/camping/server.rb +158 -0
  37. data/vendor/camping-2.0.20090212/lib/camping/session.rb +74 -0
  38. data/vendor/camping-2.0.20090212/lib/camping-unabridged.rb +638 -0
  39. data/vendor/camping-2.0.20090212/lib/camping.rb +54 -0
  40. data/vendor/camping-2.0.20090212/setup.rb +1551 -0
  41. data/vendor/camping-2.0.20090212/test/apps/env_debug.rb +65 -0
  42. data/vendor/camping-2.0.20090212/test/apps/forms.rb +95 -0
  43. data/vendor/camping-2.0.20090212/test/apps/misc.rb +86 -0
  44. data/vendor/camping-2.0.20090212/test/apps/sessions.rb +38 -0
  45. data/vendor/camping-2.0.20090212/test/test_camping.rb +54 -0
  46. metadata +128 -0
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class PicnicTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def test_truth
9
+ assert true
10
+ end
11
+ end
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/picnic'
@@ -0,0 +1,118 @@
1
+ = 1.6
2
+ === ???, 2007
3
+
4
+ * Camping::Apps removed, it wasn't reliable.
5
+ * bin/camping server kinds splitted in various files.
6
+ * NotFound and ServerError controllers changed to methods :
7
+
8
+ r404 : called when a controller was not found
9
+ r500 : called on uncaught exception
10
+ r501 : called on undefined method
11
+
12
+ All of those can be overridden at your taste.
13
+
14
+ * Markaby no longer required. Like AR, is it autoloaded on (Mab) usage.
15
+ * Camping::H is now inheriting from Hash instead of HashWithIndifferentAccess.
16
+ * Which made possible to remove the last strict dependency : active_support
17
+ * #errors_for removed, it wasn't really used
18
+ * Bug fixes !
19
+
20
+ = 1.5
21
+ === 3rd Oct, 2006
22
+
23
+ * Camping::Apps stores an array of classes for all loaded apps.
24
+ * bin/camping can be given a directory. Like: <tt>camping examples/</tt>
25
+ * Console mode -- thank zimbatm. Use: camping -C yourapp.rb
26
+ * Call controllers with Camping.method_missing.
27
+
28
+ Tepee.get(:Index) #=> (Response)
29
+ Blog.post(:Delete, id) #=> (Response)
30
+
31
+ Blog.post(:Login, :input => {'username' => 'admin', 'password' => 'camping'})
32
+ #=> #<Blog::Controllers::Login @user=... >
33
+
34
+ Blog.get(:Info, :env => {:HTTP_HOST => 'wagon'})
35
+ #=> #<Blog::Controllers::Info @env={'HTTP_HOST'=>'wagon'} ...>
36
+
37
+ * Using \r\n instead of \n on output. FastCGI has these needs.
38
+ * ActiveRecord no longer required or installed.
39
+ * If you refer to Models::Base, however, ActiveRecord will be loaded with autoload. (see lib/camping/db.rb)
40
+ * new Camping::FastCGI.serve which will serve a whole directory of apps
41
+ (see http://code.whytheluckystiff.net/camping/wiki/TheCampingServer)
42
+ * ~/.campingrc can contain database connection info if you want your default to be something other than SQLite.
43
+
44
+ database:
45
+ adapter: mysql
46
+ username: camping
47
+ socket: /tmp/mysql.sock
48
+ password: NOFORESTFIRES
49
+ database: camping
50
+
51
+ * controllers are now *ordered*. uses the inherited hook to keep track of all
52
+ classes created with R. those classes are scanned, in order, when a request is
53
+ made. any other controllers are handled first. so if you plan on overriding the
54
+ urls method, be sure to subclass from R().
55
+ * Console mode will load .irbrc in the working directory, if present.
56
+ (for example, in my ~/git/balloon directory, i have this in the .irbrc:
57
+ include Balloon::Models
58
+ when camping -C balloon.rb gets run, the models all get included in main.)
59
+ * And, of course, many other bugfixes from myself and the loyal+kind zimbatm...
60
+ * Markaby updated to 0.5. (See its CHANGELOG.)
61
+
62
+ = 1.4.2
63
+ === 18th May, 2006
64
+
65
+ * Efficient file uploads for multipart/form-data POSTs.
66
+ * Camping tool now uses Mongrel, if available. If not, sticks with WEBrick.
67
+ * Multiple apps can be loaded with the camping tool, each mounted according to their file name.
68
+
69
+ = 1.4.1
70
+ === 3rd May, 2006
71
+
72
+ * Streaming HTTP support. If body is IO, will simply pass to the controller. Mongrel, in particular, supports this nicely.
73
+
74
+ = 1.4
75
+ === 11th April, 2006
76
+
77
+ * Moved Camping::Controllers::Base to Camping::Base.
78
+ * Moved Camping::Controllers::R to Camping::R.
79
+ * New session library (lib/camping/session.rb).
80
+ * WEBrick handler (lib/camping/webrick.rb) and Mongrel handler (lib/camping/mongrel.rb).
81
+ * Helpers#URL, builds a complete URL for a route. Returns a URI object. This way relative links could just return self.URL.path.
82
+ * Base#initialize takes over some of Base#service's duties.
83
+ * ENV now available as @env in controllers and views.
84
+ * Beautiful multi-page docs without frames!
85
+
86
+ = 1.3
87
+ === 28th January, 2006
88
+
89
+ * bin/camping: an application launcher.
90
+ * <tt>Camping.run(request, response)</tt> now changed to <tt>controller = Camping.run(request, env)</tt>
91
+ * This means outputting the response is the wrapper/server's job. See bin/camping, you can do a controller.to_s at the least.
92
+ * <tt>Controllers::Base.env</tt> is the new thread-safe home for <tt>ENV</tt>.
93
+ * The input hash now works more like Rails params. You can call keys
94
+ like methods or with symbols or strings.
95
+ * Queries are now parsed more like PHP/Rails, in that you can denote
96
+ structure with brackets: post[user]=_why;post[id]=2
97
+ * Auto-prefix table names, to help prevent name clash.
98
+ * Helpers.errors_for simple validation.
99
+ * Lots of empty :href and :action attributes, a bug.
100
+ * New single-page flipbook RDoc template.
101
+
102
+ = 1.2
103
+ === 23rd January, 2006
104
+
105
+ * Camping.goes allows fresh modules build from all Camping parts.
106
+ * File uploads now supported (multipart/form-data).
107
+ * Helpers.R can rebuild routes.
108
+ * Helpers./ for tracing paths from the root.
109
+
110
+ = 1.1
111
+ === 19th January, 2006
112
+
113
+ * Allowed request and response streams to be passed in, to allow WEBrick and FastCGI support.
114
+
115
+ = 1.0
116
+ === 17th January, 2006
117
+
118
+ * Initial checkin, see announcement at http://redhanded.hobix.com/bits/campingAMicroframework.html.
@@ -0,0 +1,18 @@
1
+ Copyright (c) 2006 why the lucky stiff
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to
5
+ deal in the Software without restriction, including without limitation the
6
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ sell copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,119 @@
1
+ == Camping, a Microframework
2
+
3
+ Camping is a web framework which consistently stays at less than 4kb of code.
4
+ You can probably view the complete source code on a single page. But, you know,
5
+ it's so small that, if you think about it, what can it really do?
6
+
7
+ The idea here is to store a complete fledgling web application in a single file
8
+ like many small CGIs. But to organize it as a Model-View-Controller application
9
+ like Rails does. You can then easily move it to Rails once you've got it going.
10
+
11
+ == A Camping Skeleton
12
+
13
+ A skeletal Camping blog could look like this:
14
+
15
+ require 'camping'
16
+
17
+ Camping.goes :Blog
18
+
19
+ module Blog::Models
20
+ class Post < Base; belongs_to :user; end
21
+ class Comment < Base; belongs_to :user; end
22
+ class User < Base; end
23
+ end
24
+
25
+ module Blog::Controllers
26
+ class Index < R '/'
27
+ def get
28
+ @posts = Post.find :all
29
+ render :index
30
+ end
31
+ end
32
+ end
33
+
34
+ module Blog::Views
35
+ def layout
36
+ html do
37
+ body do
38
+ self << yield
39
+ end
40
+ end
41
+ end
42
+
43
+ def index
44
+ for post in @posts
45
+ h1 post.title
46
+ end
47
+ end
48
+ end
49
+
50
+ Some things you might have noticed:
51
+
52
+ * Camping::Models uses ActiveRecord to do its work. We love ActiveRecord!
53
+ * Camping::Controllers can be assigned URLs in the class definition. Neat?
54
+ * Camping::Views describes HTML using pure Ruby. Markup as Ruby, which we
55
+ call Markaby.
56
+ * You use Camping::goes to make a copy of the Camping framework under your
57
+ own module name (in this case: <tt>Blog</tt>.)
58
+
59
+ <b>NOTE:</b> Camping auto-prefixes table names. If your class is named
60
+ <tt>Blog::Models::Post</tt>, your table will be called <b>blog_posts</b>.
61
+ Since many Camping apps can be attached to a database at once, this helps
62
+ prevent name clash.
63
+
64
+ (If you want to see the full blog example, check out <tt>examples/blog/blog.rb</tt>
65
+ for the complete code.)
66
+
67
+ If you want to write larger applications with Camping, you are encouraged to
68
+ split the application into distinct parts which can be mounted at URLs on your
69
+ web server. You might have a blog at /blog and a wiki at /wiki. Each
70
+ self-contained. But you can certainly share layouts and models by storing them
71
+ in plain Ruby scripts.
72
+
73
+ Interested yet? Okay, okay, one step at a time.
74
+
75
+ == Installation
76
+
77
+ * <tt>gem install camping</tt>
78
+
79
+ Or for the bleeding edge:
80
+
81
+ * <tt>gem install camping --source http://code.whytheluckystiff.net</tt>
82
+
83
+ You are encourage to install Camping and SQLite3, since it is a small database
84
+ which fits perfectly with our compact bylaws, works well with the examples.
85
+
86
+ * See http://code.whytheluckystiff.net/camping/wiki/BeAlertWhenOnSqlite3 for instructions.
87
+
88
+ == Running Camping Apps
89
+
90
+ The blog example above and most Camping applications look a lot like CGI scripts.
91
+ If you run them from the commandline, you'll probably just see a pile of HTML.
92
+
93
+ Camping comes with an tool for launching apps from the commandline:
94
+
95
+ * Run: <tt>camping blog.rb</tt>
96
+ * Visit http://localhost:3301/ to use the app.
97
+
98
+ == How the Camping Tool Works
99
+
100
+ If your application isn't working with the <tt>camping</tt> tool, keep in mind
101
+ that the tool expects the following conventions to be used:
102
+
103
+ 1. You must have SQLite3 and SQLite3-ruby installed. (Once again, please see
104
+ http://code.whytheluckystiff.net/camping/wiki/BeAlertWhenOnSqlite3 for instructions.)
105
+ 2. If your script is called <tt>test.rb</tt>, Camping expects your application to
106
+ be stored in a module called <tt>Test</tt>. Case is not imporant, though. The
107
+ module can be called <tt>TeSt</tt> or any other permutation.
108
+ 3. Your script's postamble (anything enclosed in <tt>if __FILE__ == $0</tt>) will be
109
+ ignored by the tool, since the tool will create an SQLite3 database at
110
+ <tt>~/.camping.db</tt>. Or, on Windows, <tt>$USER/Application Data/Camping.db</tt>.
111
+ 4. If your application's module has a <tt>create</tt> method, it will be executed before
112
+ the web server starts up.
113
+
114
+ == The Rules of Thumb
115
+
116
+ Once you've started writing your own Camping app, I'd highly recommend that you become familiar
117
+ with the Camping Rules of Thumb which are listed on the wiki:
118
+ http://code.whytheluckystiff.net/camping/wiki/CampingRulesOfThumb
119
+
@@ -0,0 +1,174 @@
1
+ require 'rake'
2
+ require 'rake/clean'
3
+ require 'rake/gempackagetask'
4
+ require 'rake/rdoctask'
5
+ require 'rake/testtask'
6
+ require 'fileutils'
7
+ include FileUtils
8
+
9
+ NAME = "camping"
10
+ REV = (`#{ENV['GIT'] || "git"} rev-list HEAD`.split.length + 1).to_s rescue nil
11
+ VERS = ENV['VERSION'] || ("1.9" + (REV ? ".#{REV}" : ""))
12
+ CLEAN.include ['**/.*.sw?', '*.gem', '.config', 'test/test.log', '.*.pt']
13
+ RDOC_OPTS = ['--quiet', '--title', "Camping, the Documentation",
14
+ "--opname", "index.html",
15
+ "--line-numbers",
16
+ "--main", "README",
17
+ "--inline-source"]
18
+
19
+ desc "Packages up Camping."
20
+ task :default => [:check]
21
+ task :package => [:clean]
22
+
23
+ task :doc => [:before_doc, :rdoc, :after_doc]
24
+
25
+ task :before_doc do
26
+ mv "lib/camping.rb", "lib/camping-mural.rb"
27
+ mv "lib/camping-unabridged.rb", "lib/camping.rb"
28
+ end
29
+
30
+ Rake::RDocTask.new do |rdoc|
31
+ rdoc.rdoc_dir = 'doc/rdoc'
32
+ rdoc.options += RDOC_OPTS
33
+ rdoc.template = "extras/flipbook_rdoc.rb"
34
+ rdoc.main = "README"
35
+ rdoc.title = "Camping, the Documentation"
36
+ rdoc.rdoc_files.add ['README', 'CHANGELOG', 'COPYING', 'lib/camping.rb', 'lib/camping/*.rb']
37
+ end
38
+
39
+ task :after_doc do
40
+ mv "lib/camping.rb", "lib/camping-unabridged.rb"
41
+ mv "lib/camping-mural.rb", "lib/camping.rb"
42
+ cp "extras/Camping.gif", "doc/rdoc/"
43
+ cp "extras/permalink.gif", "doc/rdoc/"
44
+ sh %{scp -r doc/rdoc/* #{ENV['USER']}@rubyforge.org:/var/www/gforge-projects/camping/}
45
+ end
46
+
47
+ spec =
48
+ Gem::Specification.new do |s|
49
+ s.name = NAME
50
+ s.version = VERS
51
+ s.platform = Gem::Platform::RUBY
52
+ s.has_rdoc = true
53
+ s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"]
54
+ s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)\/', '--exclude', 'lib/camping.rb']
55
+ s.summary = "minature rails for stay-at-home moms"
56
+ s.description = s.summary
57
+ s.author = "why the lucky stiff"
58
+ s.email = 'why@ruby-lang.org'
59
+ s.homepage = 'http://code.whytheluckystiff.net/camping/'
60
+ s.executables = ['camping']
61
+
62
+ s.add_dependency('markaby', '>=0.5')
63
+ s.add_dependency('rack', '>=0.3')
64
+ s.add_dependency('metaid')
65
+ s.required_ruby_version = '>= 1.8.2'
66
+
67
+ s.files = %w(COPYING README Rakefile) +
68
+ Dir.glob("{bin,doc,test,lib,extras}/**/*") +
69
+ Dir.glob("ext/**/*.{h,c,rb}") +
70
+ Dir.glob("examples/**/*.rb") +
71
+ Dir.glob("tools/*.rb")
72
+
73
+ s.require_path = "lib"
74
+ # s.extensions = FileList["ext/**/extconf.rb"].to_a
75
+ s.bindir = "bin"
76
+ end
77
+
78
+ omni =
79
+ Gem::Specification.new do |s|
80
+ s.name = "camping-omnibus"
81
+ s.version = VERS
82
+ s.platform = Gem::Platform::RUBY
83
+ s.summary = "the camping meta-package for updating ActiveRecord, Mongrel and SQLite3 bindings"
84
+ s.description = s.summary
85
+ %w[author email homepage].each { |x| s.__send__("#{x}=", spec.__send__(x)) }
86
+
87
+ s.add_dependency('camping', "=#{VERS}")
88
+ s.add_dependency('activerecord')
89
+ s.add_dependency('sqlite3-ruby', '>=1.1.0.1')
90
+ s.add_dependency('mongrel')
91
+ s.add_dependency('acts_as_versioned')
92
+ s.add_dependency('RedCloth')
93
+ end
94
+
95
+ Rake::GemPackageTask.new(spec) do |p|
96
+ p.need_tar = true
97
+ p.gem_spec = spec
98
+ end
99
+
100
+ Rake::GemPackageTask.new(omni) do |p|
101
+ p.gem_spec = omni
102
+ end
103
+
104
+ task :install do
105
+ sh %{rake package}
106
+ sh %{sudo gem install pkg/#{NAME}-#{VERS}}
107
+ end
108
+
109
+ task :uninstall => [:clean] do
110
+ sh %{sudo gem uninstall #{NAME}}
111
+ end
112
+
113
+ Rake::TestTask.new(:test) do |t|
114
+ t.test_files = FileList['test/test_*.rb']
115
+ # t.warning = true
116
+ # t.verbose = true
117
+ end
118
+
119
+ desc "Compare camping and camping-unabridged parse trees"
120
+ task :diff do
121
+ if `which parse_tree_show`.strip.empty?
122
+ STDERR.puts "ERROR: parse_tree_show missing : `gem install ParseTree`"
123
+ exit 1
124
+ end
125
+
126
+ sh "parse_tree_show lib/camping.rb > .camping.pt"
127
+ sh "parse_tree_show lib/camping-unabridged.rb > .camping-unabridged.pt"
128
+ sh "diff -u .camping-unabridged.pt .camping.pt | less"
129
+ end
130
+
131
+ task :ruby_diff do
132
+ require 'ruby2ruby'
133
+ c = Ruby2Ruby.translate(File.read("lib/camping.rb"))
134
+ n = Ruby2Ruby.translate(File.read("lib/camping-unabridged.rb"))
135
+
136
+ File.open(".camping-unabridged.rb.rb","w"){|f|f<<c}
137
+ File.open(".camping.rb.rb","w"){|f|f<<n}
138
+
139
+ sh "diff -u .camping-unabridged.rb.rb .camping.rb.rb | less"
140
+ end
141
+
142
+ task :check => ["check:valid", "check:size", "check:lines"]
143
+ namespace :check do
144
+
145
+ desc "Check source code validity"
146
+ task :valid do
147
+ ruby "-rubygems", "-w", "lib/camping-unabridged.rb"
148
+ ruby "-rubygems", "-w", "lib/camping.rb"
149
+ end
150
+
151
+ SIZE_LIMIT = 4096
152
+ desc "Compare camping sizes to unabridged"
153
+ task :size do
154
+ FileList["lib/camping*.rb"].each do |path|
155
+ s = File.size(path)
156
+ puts "%21s : % 6d % 4d%" % [File.basename(path), s, (100 * s / SIZE_LIMIT)]
157
+ end
158
+ if File.size("lib/camping.rb") > SIZE_LIMIT
159
+ STDERR.puts "lib/camping.rb: file is too big (> #{SIZE_LIMIT})"
160
+ end
161
+ end
162
+
163
+ desc "Verify that line lenght doesn't exceed 80 chars for camping.rb"
164
+ task :lines do
165
+ i = 1
166
+ File.open("lib/camping.rb").each_line do |line|
167
+ if line.size > 81 # 1 added for \n
168
+ STDERR.puts "lib/camping.rb:#{i}: line too long (#{line[-10..-1].inspect})"
169
+ end
170
+ i += 1
171
+ end
172
+ end
173
+
174
+ end
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ trap("INT") { exit }
4
+ require 'optparse'
5
+ require 'ostruct'
6
+ require 'stringio'
7
+ require 'yaml'
8
+
9
+ $:.unshift File.dirname(__FILE__) + "/../lib"
10
+ require 'camping'
11
+ require 'camping/server'
12
+
13
+ conf = OpenStruct.new(:host => '0.0.0.0', :port => 3301)
14
+
15
+ # Setup paths
16
+ if home = ENV['HOME'] # POSIX
17
+ db_path = File.join(home, '.camping.db')
18
+ rc_path = File.join(home, '.campingrc')
19
+ elsif home = ENV['APPDATA'] # MSWIN
20
+ db_path = File.join(home, 'Camping.db')
21
+ rc_path = File.join(home, 'Campingrc')
22
+ end
23
+
24
+ # Parse options
25
+ opts = OptionParser.new do |opts|
26
+ opts.banner = "Usage: camping app1.rb, app2.rb..."
27
+ opts.define_head "#{File.basename($0)}, the microframework ON-button for ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
28
+ opts.separator ""
29
+ opts.separator "Specific options:"
30
+
31
+ opts.on("-h", "--host HOSTNAME", "Host for web server to bind to (default is all IPs)") { |conf.host| }
32
+ opts.on("-p", "--port NUM", "Port for web server (defaults to #{conf.port})") { |conf.port| }
33
+ opts.on("-d", "--database FILE", "SQLite3 database path (defaults to #{db_path ? db_path : '<none>'})") { |db_path| conf.database = {:adapter => 'sqlite3', :database => db_path} }
34
+ opts.on("-l", "--log FILE", "Start a database log ('-' for STDOUT)") { |conf.log| }
35
+ opts.on("-C", "--console", "Run in console mode with IRB") { conf.server = "console" }
36
+ server_list = ["mongrel", "webrick", "console"]
37
+ opts.on("-s", "--server NAME", server_list, "Server to force (#{server_list.join(', ')})") { |conf.server| }
38
+
39
+ opts.separator ""
40
+ opts.separator "Common options:"
41
+
42
+ # No argument, shows at tail. This will print an options summary.
43
+ # Try it and see!
44
+ opts.on_tail("-?", "--help", "Show this message") do
45
+ puts opts
46
+ exit
47
+ end
48
+
49
+ # Another typical switch to print the version.
50
+ opts.on_tail("-v", "--version", "Show version") do
51
+ class << Gem; attr_accessor :loaded_specs; end
52
+ puts Gem.loaded_specs['camping'].version
53
+ exit
54
+ end
55
+ end
56
+
57
+ begin
58
+ opts.parse! ARGV
59
+ rescue OptionParser::ParseError => ex
60
+ STDERR.puts "!! #{ex.message}"
61
+ puts "** use `#{File.basename($0)} --help` for more details..."
62
+ exit 1
63
+ end
64
+
65
+ if ARGV.length < 1
66
+ puts opts
67
+ exit 1
68
+ end
69
+
70
+ # Load configuration if any
71
+ if rc_path and File.exists?( rc_path )
72
+ YAML.load_file(rc_path).each do |k,v|
73
+ conf.send("#{k}=", v) unless conf.send(k)
74
+ end
75
+ puts "** conf file #{rc_path} loaded"
76
+ end
77
+
78
+ # Default db
79
+ if conf.database.nil? and db_path
80
+ conf.database = {:adapter => 'sqlite3', :database => db_path} if db_path
81
+ end
82
+
83
+
84
+ # get a copy of the paths to pass to the server
85
+ paths = ARGV.dup
86
+
87
+ # Check that mongrel exists
88
+ if conf.server.nil? || conf.server == "mongrel"
89
+ begin
90
+ require 'mongrel'
91
+ conf.server = "mongrel"
92
+ rescue LoadError
93
+ puts "!! could not load mongrel. Falling back to webrick."
94
+ conf.server = "webrick"
95
+ end
96
+ end
97
+
98
+ server = Camping::Server::Base.new(conf, paths)
99
+ server.start
@@ -0,0 +1,5 @@
1
+ If you've got camping installed, why not run all these examples using TheCampingServer?
2
+
3
+ From this directory, run: `camping .`
4
+
5
+ NOTE: You'll need the active_record and acts_as_versioned gems installed.