diff options
| -rw-r--r-- | Gemfile | 2 | ||||
| -rw-r--r-- | Gemfile.lock | 10 | ||||
| -rw-r--r-- | app/models/import.rb | 2 | ||||
| -rw-r--r-- | app/models/referential.rb | 37 | ||||
| -rw-r--r-- | config/environments/production.rb | 2 | ||||
| -rw-r--r-- | config/warble.rb | 15 | ||||
| -rw-r--r-- | config/web.xml.erb | 36 | 
7 files changed, 66 insertions, 38 deletions
@@ -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>  | 
