aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock10
-rw-r--r--app/models/import.rb2
-rw-r--r--app/models/referential.rb37
-rw-r--r--config/environments/production.rb2
-rw-r--r--config/warble.rb15
-rw-r--r--config/web.xml.erb36
7 files changed, 66 insertions, 38 deletions
diff --git a/Gemfile b/Gemfile
index 560716172..519bf4fd6 100644
--- a/Gemfile
+++ b/Gemfile
@@ -5,7 +5,7 @@ gem 'jquery-rails'
gem 'devise'
gem "ffi-proj4", :git => 'git://github.com/dryade/ffi-proj4.git'
-
+gem "jruby-rack-worker"
platforms :jruby do
gem 'activerecord-jdbcpostgresql-adapter', :git => 'git://github.com/dryade/activerecord-jdbc-adapter.git'
diff --git a/Gemfile.lock b/Gemfile.lock
index 03062f915..b09c6fafc 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -71,6 +71,7 @@ GEM
remote: http://rubygems.org/
specs:
GeoRuby (1.3.4)
+ RedCloth (4.2.9)
RedCloth (4.2.9-java)
SyslogLogger (1.4.1)
actionmailer (3.1.3)
@@ -107,6 +108,7 @@ GEM
acts_as_list (0.1.6)
addressable (2.2.8)
arel (2.2.3)
+ bcrypt-ruby (3.0.1)
bcrypt-ruby (3.0.1-java)
bouncy-castle-java (1.5.0146.1)
builder (3.0.0)
@@ -157,6 +159,7 @@ GEM
factory_girl_rails (1.7.0)
factory_girl (~> 2.6.0)
railties (>= 3.0.0)
+ ffi (1.0.11)
ffi (1.0.11-java)
ffi-geos (0.0.4)
ffi (~> 1.0.0)
@@ -185,8 +188,13 @@ GEM
jruby-openssl (0.7.6.1)
bouncy-castle-java (>= 1.5.0146.1)
jruby-rack (1.1.5)
+ jruby-rack-worker (0.3-java)
+ jruby-rack (>= 1.0.1)
+ json (1.7.3)
json (1.7.3-java)
json_pure (1.7.3)
+ launchy (2.1.0)
+ addressable (~> 2.2.6)
launchy (2.1.0-java)
addressable (~> 2.2.6)
ffi (~> 1.0.9)
@@ -207,6 +215,7 @@ GEM
net-ssh (2.3.0)
net-ssh-gateway (1.1.0)
net-ssh (>= 1.99.1)
+ nokogiri (1.5.2)
nokogiri (1.5.2-java)
orm_adapter (0.0.7)
polyamorous (0.5.0)
@@ -345,6 +354,7 @@ DEPENDENCIES
inherited_resources
jquery-rails
jruby-openssl
+ jruby-rack-worker
json
launchy
map_layers (~> 0.0.4)
diff --git a/app/models/import.rb b/app/models/import.rb
index fd3fb139d..ec6caa660 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -26,7 +26,7 @@ class Import < ActiveRecord::Base
self.status ||= "pending"
end
- after_create :import
+ after_create :delayed_import
def delayed_import
save_resources
delay.import
diff --git a/app/models/referential.rb b/app/models/referential.rb
index 84640e43c..d7c5bba7e 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -34,44 +34,15 @@ class Referential < ActiveRecord::Base
self
end
- before_create :prepare
+ before_create :create_schema
before_destroy :destroy_schema
- attr_accessor :resources
- attr_accessor :loader
-
- def loader
- @loader ||= ::Chouette::Loader.new(slug)
- end
+ after_create :import_resources
- def prepare
- if resources
- import_resources
- else
- create_schema
- end
- end
-
- def with_original_filename
- Dir.mktmpdir do |tmp_dir|
- tmp_link = File.join(tmp_dir, resources.original_filename)
- FileUtils.ln_s resources.path, tmp_link
- yield tmp_link
- end
- end
+ attr_accessor :resources
def import_resources
- # Apartment::Database.create create tables
- loader.create
- begin
- with_original_filename do |file|
- # chouette-command checks the file extension (and requires .zip) :(
- loader.import file
- end
- rescue => e
- loader.drop
- raise e
- end
+ imports.create(:resources => resources) if resources
end
def create_schema
diff --git a/config/environments/production.rb b/config/environments/production.rb
index a121daab6..d79d98df7 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -36,7 +36,7 @@ ChouetteIhm::Application.configure do
# Use a different logger for distributed setups
require 'syslog_logger'
config.logger = SyslogLogger.new("rails/chouette2").tap do |logger|
- logger.level = Logger::INFO
+ # logger.level = Logger::INFO
end
# Use a different cache store in production
diff --git a/config/warble.rb b/config/warble.rb
index cdc5583f9..11c6bf090 100644
--- a/config/warble.rb
+++ b/config/warble.rb
@@ -134,8 +134,19 @@ Warbler::Config.new do |config|
# 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 = 2
+ config.webxml.jruby.max.runtimes = 4
+
+ config.webxml.jruby.worker.script = <<EOF
+Rails.logger.info "start Delayed::JRubyWorker"
+begin
+require 'delayed/jruby_worker'
+Delayed::JRubyWorker.new(:quiet => false).start
+rescue => e
+ Rails.logger.fatal(e)
+ raise e
+end
+EOF
# JNDI data source name
# config.webxml.jndi = 'jdbc/rails'
diff --git a/config/web.xml.erb b/config/web.xml.erb
new file mode 100644
index 000000000..af962f3b7
--- /dev/null
+++ b/config/web.xml.erb
@@ -0,0 +1,36 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+<% webxml.context_params.each do |k,v| %>
+ <context-param>
+ <param-name><%= k %></param-name>
+ <param-value><%= v %></param-value>
+ </context-param>
+<% end %>
+
+ <filter>
+ <filter-name>RackFilter</filter-name>
+ <filter-class>org.jruby.rack.RackFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>RackFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <listener>
+ <listener-class><%= webxml.servlet_context_listener %></listener-class>
+ </listener>
+
+ <listener>
+ <listener-class>org.kares.jruby.rack.WorkerContextListener</listener-class>
+ </listener>
+
+<% if webxml.jndi then [webxml.jndi].flatten.each do |jndi| %>
+ <resource-ref>
+ <res-ref-name><%= jndi %></res-ref-name>
+ <res-type>javax.sql.DataSource</res-type>
+ <res-auth>Container</res-auth>
+ </resource-ref>
+<% end; end %>
+</web-app>