public
Last active

Bringing up a Sinatra app. Thanks to Ola Bini for the split script.

  • Download Gist
app.rb
Ruby
1 2 3 4 5 6
require 'rubygems'
require 'sinatra'
 
get '/' do
"Hello from Sinatra running on Java!"
end
appengine-web.xml
XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>YOUR-APPLICATION-ID</application>
<version>1</version>
<static-files />
<resource-files />
<sessions-enabled>false</sessions-enabled>
<system-properties>
<property name="jruby.management.enabled" value="false" />
<property name="os.arch" value="" />
<property name="jruby.compile.mode" value="JIT"/> <!-- JIT|FORCE|OFF -->
<property name="jruby.compile.fastest" value="true"/>
<property name="jruby.compile.frameless" value="true"/>
<property name="jruby.compile.positionless" value="true"/>
<property name="jruby.compile.threadless" value="false"/>
<property name="jruby.compile.fastops" value="false"/>
<property name="jruby.compile.fastcase" value="false"/>
<property name="jruby.compile.chainsize" value="500"/>
<property name="jruby.compile.lazyHandles" value="false"/>
<property name="jruby.compile.peephole" value="true"/>
</system-properties>
</appengine-web-app>
config.ru
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13
require 'rubygems'
require 'sinatra'
 
root_dir = File.dirname(__FILE__)
 
set :environment, :production
set :root, root_dir
set :app_file, File.join(root_dir, 'app.rb')
disable :run
 
require 'app'
 
run Sinatra::Application
split-jruby.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/bin/sh
 
rm -rf jruby-core.jar
rm -rf ruby-stdlib.jar
rm -rf tmp_unpack
mkdir tmp_unpack
cd tmp_unpack
jar xf ../jruby-complete.jar
cd ..
mkdir jruby-core
mv tmp_unpack/org jruby-core/
mv tmp_unpack/com jruby-core/
mv tmp_unpack/jline jruby-core/
mv tmp_unpack/jay jruby-core/
mv tmp_unpack/jruby jruby-core/
cd jruby-core
jar cf ../jruby-core.jar .
cd ../tmp_unpack
jar cf ../ruby-stdlib.jar .
cd ..
rm -rf jruby-core
rm -rf tmp_unpack
rm -rf jruby-complete.jar
warble.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
# Disable automatic framework detection by uncommenting/setting to false
# Warbler.framework_detection = false
 
# Warbler web application assembly configuration file
Warbler::Config.new do |config|
# Temporary directory where the application is staged
# config.staging_dir = "tmp/war"
 
# Application directories to be included in the webapp.
config.dirs = %w(lib public views)
 
# Additional files/directories to include, above those in config.dirs
# config.includes = FileList["db"]
config.includes = FileList["appengine-web.xml", "app.rb", "config.ru"]
# Additional files/directories to exclude
# config.excludes = FileList["lib/tasks/*"]
 
# Additional Java .jar files to include. Note that if .jar files are placed
# in lib (and not otherwise excluded) then they need not be mentioned here.
# JRuby and JRuby-Rack are pre-loaded in this list. Be sure to include your
# own versions if you directly set the value
# config.java_libs += FileList["lib/java/*.jar"]
 
# Loose Java classes and miscellaneous files to be placed in WEB-INF/classes.
# config.java_classes = FileList["target/classes/**.*"]
 
# One or more pathmaps defining how the java classes should be copied into
# WEB-INF/classes. The example pathmap below accompanies the java_classes
# configuration above. See http://rake.rubyforge.org/classes/String.html#M000017
# for details of how to specify a pathmap.
# config.pathmaps.java_classes << "%{target/classes/,}p"
 
# Gems to be included. You need to tell Warbler which gems your application needs
# so that they can be packaged in the war file.
# The Rails gems are included by default unless the vendor/rails directory is present.
# config.gems += ["activerecord-jdbcmysql-adapter", "jruby-openssl"]
# config.gems << "tzinfo"
config.gems = ['sinatra']
 
# Uncomment this if you don't want to package rails gem.
# config.gems -= ["rails"]
 
# The most recent versions of gems are used.
# You can specify versions of gems by using a hash assignment:
# config.gems["rails"] = "2.0.2"
 
# You can also use regexps or Gem::Dependency objects for flexibility or
# fine-grained control.
# config.gems << /^merb-/
# config.gems << Gem::Dependency.new("merb-core", "= 0.9.3")
 
# Include gem dependencies not mentioned specifically
config.gem_dependencies = true
 
# Files to be included in the root of the webapp. Note that files in public
# will have the leading 'public/' part of the path stripped during staging.
# config.public_html = FileList["public/**/*", "doc/**/*"]
 
# Pathmaps for controlling how public HTML files are copied into the .war
# config.pathmaps.public_html = ["%{public/,}p"]
 
# Name of the war file (without the .war) -- defaults to the basename
# of RAILS_ROOT
config.war_name = "test"
 
# Name of the MANIFEST.MF template for the war file. Defaults to the
# MANIFEST.MF normally generated by `jar cf`.
# config.manifest_file = "config/MANIFEST.MF"
 
# Value of RAILS_ENV for the webapp -- default as shown below
# config.webxml.rails.env = ENV['RAILS_ENV'] || 'production'
 
# Application booter to use, one of :rack, :rails, or :merb. (Default :rails)
# config.webxml.booter = :rack
config.webxml.booter = :rack
 
# When using the :rack booter, "Rackup" script to use.
# The script is evaluated in a Rack::Builder to load the application.
# Examples:
# config.webxml.rackup = %{require './lib/demo'; run Rack::Adapter::Camping.new(Demo)}
# config.webxml.rackup = require 'cgi' && CGI::escapeHTML(File.read("config.ru"))
 
# Control the pool of Rails runtimes. Leaving unspecified means
# the pool will grow as needed to service requests. It is recommended
# that you fix these values when running a production server!
# config.webxml.jruby.min.runtimes = 2
# config.webxml.jruby.max.runtimes = 4
config.webxml.jruby.min.runtimes = 1
config.webxml.jruby.max.runtimes = 1
config.webxml.jruby.init.serial = true
 
# JNDI data source name
# config.webxml.jndi = 'jdbc/rails'
config.java_libs = []
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.