parasite 0.2.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ Release 0-2-0
2
+ -- added parasite executable, links into rails environment
3
+ -- updated generator to be compatible with changes in Rails
4
+ -- updated generator to be compatible with changes in Camping
5
+ -- cleaned up some behind the scenes stuff
6
+ -- add a website to the build
7
+
data/Manifest.txt ADDED
@@ -0,0 +1,8 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ bin/parasite
6
+ lib/parasite.rb
7
+ test/test_parasite.rb
8
+ templates/server.rake
data/README.txt ADDED
@@ -0,0 +1,117 @@
1
+ ** Parasite
2
+
3
+ Camping app developers no longer have any reason to envy their Ruby on Rails friends: Parasite brings generators, environments, and other Rails-y goodness to the world of Camping app development.
4
+
5
+ Parasite is currently at version 0.2. The Parasite package is composed of two gems: parasite and the camping_generator. The first provides a way to hook into the Rails development environment, while the second provides a generator for creating Camping apps quickly and painlessly.
6
+
7
+ *** Installation
8
+
9
+ To install parasite and the camping_generator fire up a terminal and:
10
+
11
+ $ sudo gem install parasite
12
+ parasite will require the camping_generator, along with Rails and Camping. More details on installing those packages can be found at their project pages.
13
+
14
+ If you are installing Camping for the first time, I would encourage you to install the camping-omnibus gem:
15
+
16
+ $ sudo gem install camping-omnibus --source http://code.whytheluckystiff.net
17
+ If you wish to install the camping_generator without the parasite gem, you can install it directly with:
18
+
19
+ $ sudo gem install camping_generator
20
+ Usage
21
+
22
+ **** Parasite
23
+ The parasite package consists of an executable and a set of Rake templates to facilitate the building of Camping apps. Using the executable, you can latch on to a “host” Rails project. Just run the executable in an existing Rails environment.
24
+
25
+ $ rails example_project
26
+ create
27
+ create app/controllers
28
+ ...
29
+ $ cd example_project/
30
+ $ ls
31
+ README components doc public tmp
32
+ Rakefile config lib script vendor
33
+ app db log test
34
+ $ parasite
35
+ /path/to/parasite/parasite-0.2.0/bin/../templates/
36
+
37
+ /path/to/parasiteparasite-0.2.0/bin/../templates/server.rake
38
+
39
+ Installed parasite to ./vendor/plugins/parasite
40
+ $ ls -R vendor/plugins/parasite/
41
+ tasks
42
+
43
+ vendor/plugins/parasite//tasks:
44
+ server.rake
45
+ $
46
+ To see a description of the installed rake tasks,
47
+
48
+ $ rake -T
49
+ rake camping:server # Run the camping server with specified files or all .rb files in the apps directory
50
+ ...
51
+ Now you’re ready to start creating camping apps, using the camping_generator.
52
+
53
+ **** Camping Generator
54
+ The camping_generator adds a generator for creating templated Camping apps. If you’re not familiar with the structure of single file Camping apps, see The Camping Short, Short Example. To see the usage,
55
+
56
+ $ script/generate camping
57
+ Usage: script/generate camping CampingName [options]
58
+
59
+ Options:
60
+ --scaffold Generate controllers and views
61
+ --session Add session support
62
+ --stylesheet Include a dynamic style sheet
63
+
64
+ Rails Info:
65
+ -v, --version Show the Rails version number and quit.
66
+ -h, --help Show this help message and quit.
67
+
68
+ General Options:
69
+ -p, --pretend Run but do not make any changes.
70
+ -f, --force Overwrite files that already exist.
71
+ -s, --skip Skip files that already exist.
72
+ -q, --quiet Suppress normal output.
73
+ -t, --backtrace Debugging: show backtrace on errors.
74
+ -c, --svn Modify files with subversion. (Note: svn must be in path)
75
+
76
+ Description:
77
+ The camping generator creates a new camping app in a single file in the /app
78
+ directory.
79
+
80
+ Example:
81
+ ./script/generate camping --scaffold Blog Post User
82
+
83
+ This will create a Blog app with models (Posts and Users), views,
84
+ controllers, and the appropriate pre-amble and post-amble.
85
+
86
+ For example, let’s create the canonical jukebox app using the generator:
87
+
88
+ $ script/generate camping Jukebox Artist Record Track --scaffold --stylesheet
89
+ exists app/
90
+ create app/jukebox.rb
91
+ $ cat app/jukebox.rb
92
+ #!/usr/bin/env ruby
93
+
94
+ require 'camping'
95
+ Camping.goes :Jukebox
96
+
97
+ module Jukebox
98
+
99
+ end
100
+
101
+ module Jukebox::Models
102
+ class Artist < Base; end
103
+ class Record < Base; end
104
+ class Track < Base; end
105
+ ...
106
+ Closer investigation of the jukebox app is left as an exercise to the reader.
107
+
108
+ *** Support
109
+
110
+ The best place for getting support is on #camping on irc.freenode.net. Just ask for mfredrickson. Also, you can file bugs and patches on Parasite project page on RubyForge.
111
+
112
+ *** Links
113
+
114
+ http://rubyforge.org/projects/parasite
115
+ http://rubyonrails.com/
116
+ http://code.whytheluckystiff.net/camping
117
+
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'echoe'
5
+ require '../version.rb'
6
+
7
+ # Copy in history and readmes
8
+ File.cp '../History.txt', './History.txt'
9
+ File.cp '../README.txt', './README.txt'
10
+
11
+ Echoe.new('parasite', Parasite::Common::MAJOR_VERSION + '.0') do |p|
12
+ p.rubyforge_name = 'parasite'
13
+ p.summary = 'Turn a Rails environment into a Camping factory'
14
+ p.description = p.paragraphs_of('README.txt', 2..3).join("\n\n")
15
+ p.url = Parasite::Common::URL
16
+ p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
17
+ p.extra_deps = [['camping_generator', '0.2.0']]
18
+ end
19
+
20
+ # vim: syntax=Ruby
data/bin/parasite ADDED
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fileutils'
4
+ require 'optparse'
5
+
6
+ templates = File.dirname(__FILE__) + '/../templates/'
7
+
8
+ puts templates + "\n\n"
9
+
10
+ OPTIONS = {
11
+ :rails_root => '.'
12
+ }
13
+ parser = OptionParser.new do |opts|
14
+ opts.banner = <<BANNER
15
+ Turn your Rails environment into a Camping factory.
16
+ Installs rake tasks and overrides generators to make
17
+ creating Camping apps faster and easier.
18
+
19
+ Usage: #{File.basename($0)} [--apply-to <rails app path>]
20
+
21
+ Options are:
22
+ BANNER
23
+ opts.separator ""
24
+ opts.on("-a", "--apply-to=PATH", String,
25
+ "Root path of your rails application",
26
+ "Default: .") { |OPTIONS[:rails_root]| }
27
+ opts.parse!(ARGV)
28
+ end
29
+
30
+ plugins = File.join(OPTIONS[:rails_root], 'vendor', 'plugins')
31
+ parasite_path = File.join(plugins, 'parasite')
32
+ tasks_path = File.join(parasite_path, 'tasks')
33
+ task_templates = Dir[File.join(templates, '*.rake')]
34
+
35
+ FileUtils.rm_rf parasite_path
36
+ Dir.mkdir parasite_path
37
+
38
+ Dir.mkdir tasks_path
39
+ Dir.chdir tasks_path do
40
+ task_templates.each do |template_name|
41
+ puts template_name + "\n\n"
42
+ task_name = File.basename(template_name).sub(/\Atasks_/,'')
43
+ template = File.open(template_name,'r') {|f| f.readlines.join}
44
+ File.open(task_name, 'w') {|file| file << template }
45
+ end
46
+ end
47
+
48
+ puts "Installed parasite to #{parasite_path}"
49
+
data/lib/parasite.rb ADDED
@@ -0,0 +1,3 @@
1
+ class Parasite
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1,127 @@
1
+ #!/usr/local/bin/ruby
2
+ namespace :camping do
3
+ desc "Run the camping server with specified files or all .rb files in the apps directory"
4
+ task :server do
5
+ require 'rubygems'
6
+ require 'camping'
7
+ require 'camping/reloader'
8
+ require 'webrick/httpserver'
9
+ require 'camping/webrick'
10
+
11
+ # Get the database and log from the current rails environment
12
+ require(File.join(RAILS_ROOT, 'config', 'environment'))
13
+ database = (YAML.load(open(File.join('config', 'database.yml')))[RAILS_ENV])
14
+ log = File.join(RAILS_ROOT, 'log', RAILS_ENV + '.log')
15
+
16
+ # TODO take these from environment variables or something else useful
17
+ webhost = '0.0.0.0'
18
+ webport = '3301'
19
+
20
+ ARGV.shift # drop the 'camping' command from the list
21
+
22
+ # if the user specified a file(s) use it, otherwise grab everything in /app
23
+ ARGV << File.join(RAILS_ROOT, 'app') if ARGV.empty?
24
+
25
+ # from the camping command line tool:
26
+ # Load apps
27
+ PATHS = ARGV.dup
28
+ apps = PATHS.inject([]) do |apps, script|
29
+ if File.directory? script
30
+ apps.push(*Dir[File.join(script, '*.rb')])
31
+ else
32
+ apps << script
33
+ end
34
+ end
35
+
36
+ Camping::Reloader.database = database
37
+ Camping::Reloader.log = log
38
+ apps.map! { |script| Camping::Reloader.new(script) }
39
+ abort("** No apps successfully loaded") unless apps.detect { |app| app.klass }
40
+
41
+ def apps.find_new_scripts
42
+ each { |app| app.reload_app }
43
+ PATHS.each do |path|
44
+ Dir[File.join(path, '*.rb')].each do |script|
45
+ smount = File.basename(script, '.rb')
46
+ next if detect { |x| x.mount == smount }
47
+
48
+ puts "** Discovered new #{script}"
49
+ app = Camping::Reloader.new(script)
50
+ next unless app
51
+
52
+ yield app
53
+ self << app
54
+ end
55
+ end
56
+ self.sort! { |x, y| x.mount <=> y.mount }
57
+ end
58
+
59
+ def apps.index_page
60
+ welcome = "You are Camping"
61
+ apps = self
62
+ b = Markaby::Builder.new({}, {})
63
+ b = b.instance_eval do
64
+ html do
65
+ head do
66
+ title welcome
67
+ style <<-END, :type => 'text/css'
68
+ body {
69
+ font-family: verdana, arial, sans-serif;
70
+ padding: 10px 40px;
71
+ margin: 0;
72
+ }
73
+ h1, h2, h3, h4, h5, h6 {
74
+ font-family: utopia, georgia, serif;
75
+ }
76
+ END
77
+ end
78
+ body do
79
+ h1 welcome
80
+ p %{Good day. These are the Camping apps you mounted.}
81
+ ul do
82
+ apps.each do |app|
83
+ next unless app.klass
84
+ li do
85
+ h3(:style => "display: inline") { a app.klass.name, :href => "/#{app.mount}" }
86
+ small { text " / " ; a "View Source", :href => "/code/#{app.mount}" }
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
93
+ b.to_s
94
+ end
95
+
96
+ # Mount the root
97
+ s = WEBrick::HTTPServer.new(:BindAddress => webhost, :Port => webport)
98
+ if apps.length > 1
99
+ apps.each do |app|
100
+ s.mount "/#{app.mount}", WEBrick::CampingHandler, app
101
+ s.mount_proc("/code/#{app.mount}") do |req, resp|
102
+ resp['Content-Type'] = 'text/plain'
103
+ resp.body = app.view_source
104
+ end
105
+ end
106
+ s.mount_proc("/") do |req, resp|
107
+ apps.find_new_scripts do |app|
108
+ s.mount "/#{app.mount}", WEBrick::CampingHandler, app
109
+ s.mount_proc("/code/#{app.mount}") do |req, resp|
110
+ resp['Content-Type'] = 'text/plain'
111
+ resp.body = app.view_source
112
+ end
113
+ end
114
+ resp.body = apps.index_page
115
+ end
116
+ else
117
+ s.mount "/", WEBrick::CampingHandler, apps.first
118
+ end
119
+
120
+ # Server up
121
+ trap(:INT) do
122
+ s.shutdown
123
+ end
124
+ s.start
125
+
126
+ end
127
+ end
File without changes
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.1
3
+ specification_version: 1
4
+ name: parasite
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.2.0
7
+ date: 2007-03-11 00:00:00 -06:00
8
+ summary: Turn a Rails environment into a Camping factory
9
+ require_paths:
10
+ - lib
11
+ email: ""
12
+ homepage: http://parasite.rubyforge.org
13
+ rubyforge_project: parasite
14
+ description: "Parasite is currently at version 0.2. The Parasite package is composed of two gems: parasite and the camping_generator. The first provides a way to hook into the Rails development environment, while the second provides a generator for creating Camping apps quickly and painlessly. *** Installation"
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - ""
31
+ files:
32
+ - History.txt
33
+ - Manifest.txt
34
+ - README.txt
35
+ - Rakefile
36
+ - bin/parasite
37
+ - lib/parasite.rb
38
+ - test/test_parasite.rb
39
+ - templates/server.rake
40
+ test_files:
41
+ - test/test_parasite.rb
42
+ rdoc_options: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ executables:
47
+ - parasite
48
+ extensions: []
49
+
50
+ requirements: []
51
+
52
+ dependencies:
53
+ - !ruby/object:Gem::Dependency
54
+ name: camping_generator
55
+ version_requirement:
56
+ version_requirements: !ruby/object:Gem::Version::Requirement
57
+ requirements:
58
+ - - "="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.2.0
61
+ version: