7

我可以使用 THIN

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

它可以在控制台/终端中完美运行

但是当我尝试在“运行/调试配置”->“编辑脚本参数”下的 ruby​​mine 中附加这些选项时,我得到:

/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>'

过程以退出代码 1 结束 谁能帮助我们/我?

非常感谢!

4

4 回答 4

4

使用以下方式

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'
于 2015-04-05T09:46:41.493 回答
3

我在这里得到了帮助:

http://devnet.jetbrains.com/message/5490676

似乎 Rubymine 无法解析此类参数,但解决方法是使用 Run/Debug Configurations 中的 Ruby 脚本执行此操作

于 2013-06-25T08:14:58.503 回答
1

--ssl-verify不应使用该选项

于 2015-04-04T13:59:15.420 回答
0

显然,这实际上可以通过添加 Procfile 和 gem foreman 来实现,如以下指令集所示:

在 RubyMine 中使用 Rails、Thin 和 SSL:解决方案!

基本上,您将工头添加到您的 Gemfile:

gem 'foreman'

然后在您的根目录中创建一个Procfile链接拼写错误),其中包含以下内容:

web: thin start --ssl

或者,像 RubyMine 通常那样绑定到 0.0.0.0:

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

我不需要指定我的 ssl 文件的位置,但如果您愿意,可以:

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

我不建议使用--ssl-verify,因为这对我不起作用。

最后,在 RubyMine 中,使用以下属性创建一个新的 Ruby 配置:

  • Ruby 脚本:这应该是工头可执行文件的路径,例如:~/.rvm/gems/ruby-2.3.0@gemset/gems/foreman-0.82.0/bin/foreman
  • 脚本参数start
  • 工作目录:项目的根目录,例如~/Sites/appname

bundle exec在 Bundler 选项卡中,选中运行它时要使用的唯一复选框。

最后,在日志选项卡中,添加一个新的日志文件指向~/Sites/appname/logs/development.log

于 2017-01-13T17:15:21.310 回答