servloko 0.0.1

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/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source :rubygems
2
+
3
+ # Specify your gem's dependencies in sifi.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,10 @@
1
+ servloko
2
+ ========
3
+ A simple way to take a ruby script and serve it up via an HTTP port.
4
+
5
+ usage
6
+ =====
7
+ servloko <file> [thin opts (thin -h)]
8
+
9
+ $> servloko /path/to/ruby/file.rb
10
+ $> servloko /path/to/ruby/file.rb [thin opts]
data/Rakefile ADDED
@@ -0,0 +1,46 @@
1
+ require "bundler"
2
+
3
+ Bundler.setup
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ require "rake"
7
+ require "yaml"
8
+
9
+ require "rake/rdoctask"
10
+ require "rspec/core/rake_task"
11
+
12
+ desc "Run all examples"
13
+ RSpec::Core::RakeTask.new(:spec) do |t|
14
+ t.rspec_opts = %w[--color]
15
+ t.verbose = false
16
+ end
17
+
18
+ task :clobber do
19
+ rm_rf 'pkg'
20
+ rm_rf 'tmp'
21
+ rm_rf 'coverage'
22
+ end
23
+
24
+ namespace :rcov do
25
+ task :cleanup do
26
+ rm_rf 'coverage.data'
27
+ rm_rf 'coverage'
28
+ end
29
+
30
+ RSpec::Core::RakeTask.new :spec do |t|
31
+ t.rcov = true
32
+ end
33
+ end
34
+
35
+ task :rcov => ["rcov:cleanup", "rcov:spec"]
36
+
37
+ task(:release).clear_prerequisites.clear_actions
38
+
39
+ task :default => [:spec]
40
+
41
+ Rake::RDocTask.new do |rdoc|
42
+ rdoc.rdoc_dir = 'rdoc'
43
+ rdoc.title = "servloko gem"
44
+ rdoc.rdoc_files.include('README*')
45
+ rdoc.rdoc_files.include('lib/**/*.rb')
46
+ end
data/bin/servloko ADDED
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'servloko'
5
+ rescue LoadError
6
+ lib_path = File.expand_path('../../lib', __FILE__)
7
+ $:.unshift(lib_path)
8
+ require "servloko"
9
+ end
10
+
11
+ file = ARGV[0]
12
+ argv_c = ARGV.dup
13
+ argv_c.shift
14
+ thin_opts = argv_c.join(" ")
15
+
16
+ if file.nil? || file.empty?
17
+ puts "You must provide a file to run"
18
+ puts "Usage: servloko <file> [thin opts]"
19
+ exit 1
20
+ elsif file.include?"-h"
21
+ puts "Usage: servloko <file> [thin opts]"
22
+ puts `thin -h`
23
+ exit 1
24
+ end
25
+
26
+ Servloko.start(file,thin_opts)
@@ -0,0 +1,3 @@
1
+ module Servloko
2
+ VERSION = "0.0.1"
3
+ end
data/lib/servloko.rb ADDED
@@ -0,0 +1,38 @@
1
+ require 'tempfile'
2
+ require 'pty'
3
+ require 'servloko/version'
4
+
5
+ module Servloko
6
+
7
+ def self.start(file,thin_opts)
8
+ puts "Servloko v#{Servloko::VERSION} booting thin"
9
+ puts "------------------------------------------------------"
10
+ rackup = Tempfile.new(['servloko','.ru'])
11
+ begin
12
+
13
+ unless thin_opts.include?("-d")
14
+ rackup.write "use Rack::CommonLogger\n"
15
+ end
16
+
17
+ rackup.write "app = proc do |env|\n"
18
+ rackup.write " req = Rack::Request.new(env)\n"
19
+ rackup.write " body = [`ruby #{file} \"\#\{req.query_string\}\"`.chomp.gsub('\r\n','<br/>')]\n"
20
+ rackup.write " [200,{'Content-Type' => 'text/html'},body]\n"
21
+ rackup.write "end\n"
22
+ rackup.write "run app\n"
23
+ rackup.flush
24
+
25
+ PTY.spawn "thin start -R #{rackup.path} #{thin_opts}" do |r,w,p|
26
+ loop { puts r.gets }
27
+ end
28
+ rescue SignalException => e
29
+ puts
30
+ puts "shutting down..."
31
+ ensure
32
+ puts "------------------------------------------------------"
33
+ rackup.close
34
+ rackup.unlink
35
+ end
36
+ end
37
+
38
+ end
data/servloko.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "servloko/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "servloko"
7
+ s.version = Servloko::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Jake Good"]
10
+ s.email = ["jake@whoisjake.com"]
11
+ s.homepage = "http://www.thoughtstoblog.com"
12
+ s.summary = %q{Servloko takes a ruby script and magically provides it's output to the web.}
13
+ s.description = %q{Servloko takes a ruby script and magically provides it's output to the web. Be careful though, you could expose system details.}
14
+
15
+ s.rubyforge_project = "servloko"
16
+ s.add_dependency "thin", "~> 1.3.0"
17
+ s.add_development_dependency "rake", "~> 0.9.0"
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.rdoc_options = ["--charset=UTF-8"]
22
+ s.require_paths = ["lib"]
23
+ end
data/test/echo.rb ADDED
@@ -0,0 +1 @@
1
+ puts ARGV.inspect
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: servloko
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jake Good
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thin
16
+ requirement: &70331977298500 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.3.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70331977298500
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70331977297780 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 0.9.0
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70331977297780
36
+ description: Servloko takes a ruby script and magically provides it's output to the
37
+ web. Be careful though, you could expose system details.
38
+ email:
39
+ - jake@whoisjake.com
40
+ executables:
41
+ - servloko
42
+ extensions: []
43
+ extra_rdoc_files: []
44
+ files:
45
+ - Gemfile
46
+ - README.md
47
+ - Rakefile
48
+ - bin/servloko
49
+ - lib/servloko.rb
50
+ - lib/servloko/version.rb
51
+ - servloko.gemspec
52
+ - test/echo.rb
53
+ homepage: http://www.thoughtstoblog.com
54
+ licenses: []
55
+ post_install_message:
56
+ rdoc_options:
57
+ - --charset=UTF-8
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project: servloko
74
+ rubygems_version: 1.8.11
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: Servloko takes a ruby script and magically provides it's output to the web.
78
+ test_files: []
79
+ has_rdoc: