Ответ для Rails 4 с использованием JRuby
Я использую Rails 4 с JRuby 1.7.8 (1.9.3p392) и activerecord-jdbcpostgresql-адаптер 1.3.4
Это решение позволит вашему приложению Rails подключаться к серверу PostgreSQL с использованием SSL. В этом решении я использую NonValidatingFactory, которая должна использоваться только для тестирования. Для безопасной настройки производства вам необходимо настроить trustStore, который пока выходит за рамки моего опыта.
Шаги по настройке Postgres SSL
Добавить драгоценный камень в gemfile
gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
Добавить параметры в ваш database.yml (для разработки)
sslmode: require
properties: { sslfactory: 'org.postgresql.ssl.NonValidatingFactory' }
Для производства вам необходимо создать хранилище и удалить «NonValidatingFactor» (кратко описано в connection_methods.rb)
# JRuby/JVM needs to be started with :
# -Djavax.net.ssl.trustStore=mystore -Djavax.net.ssl.trustStorePassword=...
# or a non-validating connection might be used (for testing) :
# :sslfactory = 'org.postgresql.ssl.NonValidatingFactory'
Справочная информация
Адаптер Postgres построен на JDBC. Самой полезной информацией, которую я нашел, был интерфейс между Ruby и Java и действующая документация JDBC.
Интерфейс Ruby to Java в адаптере:
https://github.com/jruby/activerecord-jdbc-adapter/blob/master/lib/arjdbc/postgresql/connection_methods.rb
Страница подключения JDBC Postgres:
http://jdbc.postgresql.org/documentation/80/connect.html
Пример базы данных.yml
development:
adapter: postgresql
encoding: unicode
database: SSL_Test
pool: 5
timeout: 5000
username: postgres
password: YourPassword!
sslmode: require
properties: { sslfactory: 'org.postgresql.ssl.NonValidatingFactory' }
host: www.example.com
port: 5432
Предостережения
Это может работать с другими конфигурациями и версиями. Если у вас все получится, добавьте комментарий, чтобы другие знали, что это работает в вашей конкретной конфигурации. Спасибо.