No final de 2012, as coisas parecem ter mudado. Embora a documentação ainda seja escassa, a gem pg parece negociar SSL automaticamente, e os drivers jdbc podem ser coagidos a usar SSL.
Meu aplicativo é um aplicativo híbrido MRI-jRuby, que acessa heroku-postgres, um servidor postgresql em nuvem que requer SSL.
# Gemfile.lock
pg (0.14.1)
activerecord-jdbc-adapter (1.2.2.1)
activerecord-jdbcpostgresql-adapter (1.2.2.1)
jdbc-postgres (9.1.901)
A gem pg, parecia negociar SSL automaticamente. No entanto, o adaptador JDBC não. MRI conectado com um típico database.yml (sem menção a ssl), mas o JDBC lançou:
(FATAL: no pg_hba.conf entry for host "xx.xx.xx.xx", user "username", database "database", SSL off)
Eventualmente, tentei especificar os detalhes da conexão no formato JDBC-URL e a conexão foi bem-sucedida:
# jruby database.yml
production:
adapter: jdbcpostgresql
url: jdbc:postgresql://host/database?user=user&password=password&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
(sslfactory pode não ser necessário para todas as configurações)