ulbrich-jruby-enginize 0.3 → 0.4
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/README.rdoc +3 -3
- data/templates/shared/README +6 -5
- data/templates/shared/Rakefile +60 -19
- data/templates/sinatra/config/warble.rb +6 -16
- data/templates/sinatra/lib/tasks/sinatra.rake +1 -1
- metadata +1 -2
- data/templates/shared/lib/split-jruby.sh +0 -67
data/README.rdoc
CHANGED
@@ -72,18 +72,18 @@ an unstable version and don't want to risk your users getting exceptions.
|
|
72
72
|
|
73
73
|
You can try the new version by opening e.g.
|
74
74
|
|
75
|
-
|
75
|
+
<tt>http://3.latest.foobar.appspot.com</tt>
|
76
76
|
|
77
77
|
and replacing "3" with the version number you want to run.
|
78
78
|
|
79
79
|
Switch the application to the new version as default (stable version) by
|
80
80
|
opening
|
81
81
|
|
82
|
-
|
82
|
+
<tt>http://appengine.google.com/deployment?&app_id=foobar</tt>
|
83
83
|
|
84
84
|
and setting a new default available at
|
85
85
|
|
86
|
-
|
86
|
+
<tt>http://foobar.appspot.com</tt>
|
87
87
|
|
88
88
|
A small README with these and a few more application specific hints is
|
89
89
|
generated along with the source code. Have fun.
|
data/templates/shared/README
CHANGED
@@ -5,11 +5,12 @@ something more meaningful... ;-)
|
|
5
5
|
|
6
6
|
GOOGLE APPENGINE DEPLOYMENT
|
7
7
|
|
8
|
-
As a basic requirement,
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
!!Attention: As a basic requirement, the JRuby archive "jruby-complete.jar"
|
9
|
+
has to be placed in the "lib" directory of your app and this is way to large
|
10
|
+
to include it in the generator. If you have this file on your disk, copy it
|
11
|
+
over and be sure to rename it to "jruby-complete.jar". If missing, the
|
12
|
+
deployment will download the file for you. Expect a 10 MB download (only done
|
13
|
+
once).
|
13
14
|
|
14
15
|
Deploy the application with
|
15
16
|
|
data/templates/shared/Rakefile
CHANGED
@@ -2,10 +2,30 @@ require 'rake'
|
|
2
2
|
require 'rake/testtask'
|
3
3
|
require 'rake/rdoctask'
|
4
4
|
|
5
|
+
require 'net/http'
|
6
|
+
|
5
7
|
Dir[File.join(File.dirname(__FILE__), 'lib', 'tasks', '*.rake')].each do |ext|
|
6
8
|
load ext
|
7
9
|
end
|
8
10
|
|
11
|
+
# Helper for retrieving HTML files. Only used to check or trigger things so
|
12
|
+
# no highclass implementation...
|
13
|
+
|
14
|
+
def fetch(uri, limit = 10)
|
15
|
+
raise ArgumentError, 'HTTP redirect too deep' if limit == 0
|
16
|
+
|
17
|
+
response = Net::HTTP.get_response(URI.parse(uri))
|
18
|
+
|
19
|
+
case response
|
20
|
+
when Net::HTTPSuccess then
|
21
|
+
return response
|
22
|
+
when Net::HTTPRedirection then
|
23
|
+
return fetch(response['location'], limit - 1)
|
24
|
+
else
|
25
|
+
return response.error!
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
9
29
|
desc 'Display some help and the README'
|
10
30
|
task :help do
|
11
31
|
puts 'Call "jruby -S rake --tasks" to learn what tasks are available...'
|
@@ -16,24 +36,45 @@ end
|
|
16
36
|
task :default => [:help]
|
17
37
|
|
18
38
|
namespace :jruby do
|
19
|
-
desc '
|
20
|
-
task :
|
21
|
-
puts '
|
22
|
-
|
23
|
-
|
39
|
+
desc 'Download current "jruby-complete.jar" from dist.codehaus.org.'
|
40
|
+
task :download do
|
41
|
+
puts 'Download current "jruby-complete.jar" from dist.codehaus.org.'
|
42
|
+
|
43
|
+
begin
|
44
|
+
baseurl = 'http://dist.codehaus.org/jruby/current'
|
45
|
+
directory = fetch(baseurl)
|
46
|
+
|
47
|
+
if directory.kind_of? Net::HTTPOK and
|
48
|
+
(match = directory.body.match(/.*"(jruby-complete-[^"]*\.jar)".*/)) and
|
49
|
+
match.length == 2
|
50
|
+
then
|
51
|
+
`(curl -o lib/jruby-complete.jar "#{baseurl}/#{match[1]}") 1>&2`
|
52
|
+
raise Errno::ENOENT if $? != 0
|
53
|
+
else
|
54
|
+
raise Errno::ENOENT
|
55
|
+
end
|
56
|
+
rescue Exception
|
57
|
+
puts '!!Could not download "jruby-complete.jar". Retry or download manually.'
|
58
|
+
exit(1)
|
59
|
+
end
|
24
60
|
end
|
25
61
|
|
26
|
-
desc '
|
27
|
-
task :
|
28
|
-
|
29
|
-
|
62
|
+
desc 'Run the jruby:download task if the JRuby JAR is missing.'
|
63
|
+
task :check4jar do
|
64
|
+
file = File.join(File.dirname(__FILE__), 'lib', 'jruby-complete.jar')
|
65
|
+
|
66
|
+
puts 'Run the jruby:download task if the JRuby JAR is missing.'
|
30
67
|
|
31
68
|
begin
|
32
|
-
File.stat(
|
33
|
-
|
69
|
+
File.stat(file)
|
70
|
+
|
71
|
+
`(unzip -l #{file}) 2>&1`
|
72
|
+
raise Errno::ENOENT if $? != 0
|
73
|
+
|
74
|
+
puts 'JRuby JAR already exists.'
|
34
75
|
rescue Errno::ENOENT
|
35
|
-
puts 'Need to
|
36
|
-
Rake::Task['jruby:
|
76
|
+
puts 'Need to download JRuby JAR. Downloading now...'
|
77
|
+
Rake::Task['jruby:download'].invoke
|
37
78
|
end
|
38
79
|
end
|
39
80
|
end
|
@@ -42,27 +83,27 @@ namespace :appengine do
|
|
42
83
|
desc 'Create the WAR file for deployment'
|
43
84
|
task :war do
|
44
85
|
puts 'Create the WAR file for deployment.'
|
45
|
-
|
86
|
+
`(jruby -S warble) 1>&2`
|
46
87
|
end
|
47
88
|
|
48
89
|
desc 'Upload the new application code'
|
49
90
|
task :upload do
|
50
91
|
puts 'Upload the new application code (this may take a while).'
|
51
|
-
|
92
|
+
`(appcfg.sh --enable_jar_splitting --email={{email}} update tmp/war) 1>&2`
|
52
93
|
end
|
53
94
|
|
54
95
|
desc 'Roll back a blocked and halfway broken deploy'
|
55
96
|
task :rollback do
|
56
97
|
puts 'Roll back a blocked and halfway broken deploy.'
|
57
|
-
|
98
|
+
`(appcfg.sh --enable_jar_splitting rollback tmp/war) 1>&2`
|
58
99
|
end
|
59
100
|
|
60
101
|
desc 'Remove temp stuff'
|
61
102
|
task :clean do
|
62
103
|
puts 'Remove temp stuff.'
|
63
|
-
|
104
|
+
`rm -rf tmp {{name}}.war`
|
64
105
|
end
|
65
106
|
|
66
|
-
desc 'Deploy the application (generating WAR
|
67
|
-
task :deploy => ['jruby:
|
107
|
+
desc 'Deploy the application (generating WAR and uploading files)'
|
108
|
+
task :deploy => ['jruby:check4jar', :war, :upload]
|
68
109
|
end
|
@@ -32,17 +32,11 @@ Warbler::Config.new do |config|
|
|
32
32
|
|
33
33
|
# Gems to be included. You need to tell Warbler which gems your application needs
|
34
34
|
# so that they can be packaged in the war file.
|
35
|
-
# The Rails gems are included by default unless the vendor/rails directory is present.
|
36
|
-
# config.gems += ["activerecord-jdbcmysql-adapter", "jruby-openssl"]
|
37
|
-
# config.gems << "tzinfo"
|
38
35
|
config.gems = ['sinatra', 'haml']
|
39
36
|
|
40
|
-
# Uncomment this if you don't want to package rails gem.
|
41
|
-
# config.gems -= ["rails"]
|
42
|
-
|
43
37
|
# The most recent versions of gems are used.
|
44
38
|
# You can specify versions of gems by using a hash assignment:
|
45
|
-
# config.gems["
|
39
|
+
# config.gems["foo"] = "2.0.2"
|
46
40
|
|
47
41
|
# You can also use regexps or Gem::Dependency objects for flexibility or
|
48
42
|
# fine-grained control.
|
@@ -59,19 +53,17 @@ Warbler::Config.new do |config|
|
|
59
53
|
# Pathmaps for controlling how public HTML files are copied into the .war
|
60
54
|
# config.pathmaps.public_html = ["%{public/,}p"]
|
61
55
|
|
62
|
-
# Name of the war file (without the .war)
|
63
|
-
# of RAILS_ROOT
|
56
|
+
# Name of the war file (without the .war)
|
64
57
|
config.war_name = "{{name}}"
|
65
58
|
|
66
59
|
# Name of the MANIFEST.MF template for the war file. Defaults to the
|
67
60
|
# MANIFEST.MF normally generated by `jar cf`.
|
68
61
|
# config.manifest_file = "config/MANIFEST.MF"
|
69
62
|
|
70
|
-
# Value of
|
71
|
-
# config.webxml.
|
63
|
+
# Value of environment variables
|
64
|
+
# config.webxml.foo.env = ENV['FOO_ENV']
|
72
65
|
|
73
|
-
# Application booter to use, one of :rack, :rails, or :merb
|
74
|
-
# config.webxml.booter = :rack
|
66
|
+
# Application booter to use, one of :rack, :rails, or :merb
|
75
67
|
config.webxml.booter = :rack
|
76
68
|
|
77
69
|
# When using the :rack booter, "Rackup" script to use.
|
@@ -80,7 +72,7 @@ Warbler::Config.new do |config|
|
|
80
72
|
# config.webxml.rackup = %{require './lib/demo'; run Rack::Adapter::Camping.new(Demo)}
|
81
73
|
# config.webxml.rackup = require 'cgi' && CGI::escapeHTML(File.read("config.ru"))
|
82
74
|
|
83
|
-
# Control the pool of
|
75
|
+
# Control the pool of runtimes. Leaving unspecified means
|
84
76
|
# the pool will grow as needed to service requests. It is recommended
|
85
77
|
# that you fix these values when running a production server!
|
86
78
|
# config.webxml.jruby.min.runtimes = 2
|
@@ -89,7 +81,5 @@ Warbler::Config.new do |config|
|
|
89
81
|
config.webxml.jruby.max.runtimes = 1
|
90
82
|
config.webxml.jruby.init.serial = true
|
91
83
|
|
92
|
-
# JNDI data source name
|
93
|
-
# config.webxml.jndi = 'jdbc/rails'
|
94
84
|
config.java_libs = []
|
95
85
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ulbrich-jruby-enginize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "0.
|
4
|
+
version: "0.4"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Ulbrich
|
@@ -36,7 +36,6 @@ files:
|
|
36
36
|
- templates/shared/README
|
37
37
|
- templates/shared/Rakefile
|
38
38
|
- templates/shared/public/images/appengine_logo.png
|
39
|
-
- templates/shared/lib/split-jruby.sh
|
40
39
|
- templates/shared/lib/jruby-rack-0.9.4.jar
|
41
40
|
- templates/shared/appengine-web.xml
|
42
41
|
- README.rdoc
|
@@ -1,67 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
# Utility script for splitting the JRuby JAR into two smaller JAR files. This
|
3
|
-
# is a workaround for a limitation of the JAR size in Google AppEngine.
|
4
|
-
#
|
5
|
-
# The code for this script has been taken from hints and links found at
|
6
|
-
# http://jruby-rack.appspot.com.
|
7
|
-
|
8
|
-
SCRIPTHOME=`dirname $0`
|
9
|
-
JRUBY=`which jruby`
|
10
|
-
|
11
|
-
if [ ! -x "$JRUBY" ]; then
|
12
|
-
echo "!!Missing jruby executable. Please check installation." > /dev/stderr
|
13
|
-
exit 1
|
14
|
-
fi
|
15
|
-
|
16
|
-
# See where the jruby binary is installed and find the JRuby JAR from there.
|
17
|
-
|
18
|
-
PREFIX=`dirname \`dirname $JRUBY\``
|
19
|
-
JARFILE="$PREFIX/share/java/jruby/lib/jruby-complete.jar"
|
20
|
-
|
21
|
-
if [ ! -f "$JARFILE" ]; then
|
22
|
-
PREFIX=`dirname \`dirname $JRUBY\``
|
23
|
-
JARFILE="$PREFIX/lib/jruby-complete.jar"
|
24
|
-
fi
|
25
|
-
|
26
|
-
if [ ! -f "$JARFILE" ]; then
|
27
|
-
echo "!!Missing JRuby JAR. Please check installation." > /dev/stderr
|
28
|
-
exit 1
|
29
|
-
fi
|
30
|
-
|
31
|
-
echo "Using $JARFILE for splitting"
|
32
|
-
echo "and assembling a AppEngine savvy version of the JRuby JAR in the lib "
|
33
|
-
echo "directory."
|
34
|
-
|
35
|
-
cd $SCRIPTHOME
|
36
|
-
|
37
|
-
rm -rf jruby-core.jar
|
38
|
-
rm -rf ruby-stdlib.jar
|
39
|
-
rm -rf tmp_unpack
|
40
|
-
|
41
|
-
mkdir -p tmp_unpack
|
42
|
-
cd tmp_unpack
|
43
|
-
|
44
|
-
jar xf $JARFILE
|
45
|
-
|
46
|
-
cd ..
|
47
|
-
|
48
|
-
mkdir -p jruby-core
|
49
|
-
|
50
|
-
mv tmp_unpack/org jruby-core
|
51
|
-
mv tmp_unpack/com jruby-core
|
52
|
-
mv tmp_unpack/jline jruby-core
|
53
|
-
mv tmp_unpack/jay jruby-core
|
54
|
-
mv tmp_unpack/jruby jruby-core
|
55
|
-
|
56
|
-
cd jruby-core
|
57
|
-
|
58
|
-
jar cf ../jruby-core.jar .
|
59
|
-
|
60
|
-
cd ../tmp_unpack
|
61
|
-
|
62
|
-
jar cf ../ruby-stdlib.jar .
|
63
|
-
|
64
|
-
cd ..
|
65
|
-
|
66
|
-
rm -rf jruby-core
|
67
|
-
rm -rf tmp_unpack
|