2013-06-20 16 views
7

posso usare sottile conRubyMine sottile con opzioni SSL

bundle exec thin start --ssl --ssl-verify --ssl-key-file /private/etc/apache2/ssl/server.key --ssl-cert-file /private/etc/apache2/ssl/server.crt 

Funziona nella console/terminale, perfettamente

Ma quando cerco di aggiungere queste opzioni in RubyMine in "Run/Debug configurazioni" -> "Argomenti Modifica script" ottengo:

/Users/jan/.rbenv/versions/1.9.3-p392/bin/ruby -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /Users/jan/RubymineProjects/myapp/script/rails server thin -b 0.0.0.0 -p 3000 -e development --ssl-verify --ssl-key-file /private/etc/apache2/ssl/server.key --ssl-cert-file /private/etc/apache2/ssl/server.crt 
/Users/jan/.gem/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/server.rb:33:in `parse!': invalid option: --ssl-verify (OptionParser::InvalidOption) 
from /Users/jan/.gem/ruby/1.9.1/gems/rack-1.4.5/lib/rack/server.rb:283:in `parse_options' 
from /Users/jan/.gem/ruby/1.9.1/gems/rack-1.4.5/lib/rack/server.rb:180:in `options' 
from /Users/jan/.gem/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/server.rb:54:in `set_environment' 
from /Users/jan/.gem/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/server.rb:42:in `initialize' 
from /Users/jan/.gem/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:50:in `new' 
from /Users/jan/.gem/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>' 
from /Users/jan/RubymineProjects/myapp/script/rails:6:in `require' 
from /Users/jan/RubymineProjects/myapp/script/rails:6:in `<top (required)>' 
from -e:1:in `load' 
from -e:1:in `<main>' 

processo finito con codice di uscita 1 qualcuno può aiutarci/me out?

molte grazie!

+0

Non può essere specificato il file di chiavi SSL e il certificato nel file di configurazione di sottile (YAML)? –

risposta

1

L'opzione --ssl-verify non deve essere utilizzato

4

Usa segue

require 'rack' 

SERVER_KEY = File.expand_path('../../ssl-cert/host.key', __FILE__) 
SERVER_PEM = File.expand_path('../../ssl-cert/host.crt', __FILE__) 

# Thin SSL workaround 
module Rack 
    module Handler 
    class Thin 
     def self.run(app, options={}) 
     app = Rack::Chunked.new(Rack::ContentLength.new(app)) 
     server = ::Thin::Server.new(options[:Host] || '0.0.0.0', 
            options[:Port] || 3000, 
            app) 
     server.ssl = true 
     server.ssl_options = { 
      :private_key_file => SERVER_KEY, 
      :cert_chain_file => SERVER_PEM 
     } 
     yield server if block_given? 
     server.start 
     end 
    end 
    end 
end 
# Workaround end 

APP_PATH = File.expand_path('../../config/application', __FILE__) 
require File.expand_path('../../config/boot', __FILE__) 
require 'rails/commands' 
.210
+0

Da [questo commento Github] (https://gist.github.com/masone/5955f4cc0b4d4ef372db#gistcomment-1448440), se si desidera che Thin utilizzi il proprio certificato autofirmato incorporato, è possibile passare 'nil' a': private_key_file' e ': cert_chain_file'. – Aaroninus

0

A quanto pare questo può effettivamente essere tirato fuori con l'aggiunta di un Procfile e il caposquadra gemma, come in questo set di istruzioni:

Using Rails, Thin and SSL in RubyMine: The solution!

In sostanza, si aggiunge caposquadra al Gemfile:

gem 'foreman' 

quindi creare un Procfile (il link sbaglia questo) nella root che contiene questo:

web: thin start --ssl 

o, per legarsi a 0.0.0.0 come RubyMine fa di solito:

web: thin start -a 0.0.0.0 -p 3001 --ssl 

non ho bisogno di specificare la posizione dei miei file ssl, ma se si voleva sarebbe:

web: thin start -a 0.0.0.0 -p 3001 --ssl --ssl-key-file /private/etc/apache2/ssl/server.key --ssl-cert-file /private/etc/apache2/ssl/server.crt 

Non mi consiglia di utilizzare --ssl-verify perché non ha funzionato per me.

Ultimo, in RubyMine, creare una nuova configurazione di Ruby con i seguenti attributi:

  • Rubino sceneggiatura: Questo dovrebbe essere il percorso dell'eseguibile caposquadra, ad esempio: ~/.rvm/gems/[email protected]/gems/foreman-0.82.0/bin/foreman argomenti
  • Script : start
  • Directory di lavoro: la directory principale del progetto, ad es.~/Sites/appname

Nella scheda Bundler, selezionare l'unica casella di controllo per utilizzare bundle exec durante l'esecuzione.

scorso, nella scheda Registri, aggiungere un nuovo file di registro che punta al ~/Sites/appname/logs/development.log