由於客戶的主機放在 kinsta 上,不好開發佈署 ruby on rails 程式,又必須連線至一些資料庫的表格,所以需要透過 ssh gateway tunnel。
如果你像我一樣用 ‘rails config database remote ssh tunnel’ 等關鍵字搜尋,你很可能會找到這一篇文章—“How do I configure Rails for password-less access to remote database”。
很可惜,這篇文章的解法我左試右試就是無法成功,我的結論是在 config 裡想要成功地轉換 port 是辦不到的。於是我將念頭轉到了 model。
首先你必須安裝 net-ssh-gateway
gem 'net-ssh-gateway'
別忘了 bundle install
然後建立一個遠端 table 的 model file,因為筆者想要連進 wordpress 的 wp_post table,所以就建了一個 wp_post.rb
class WpPost < ActiveRecord::Base
establish_connection(
:adapter => "mysql2",
:host => "127.0.0.1",
:username => "your_username",
:password => "your_password",
:database => "your_database",
:port => Net::SSH::Gateway.new(
'104.xxx.xxx.xx',
'username',
port: '42622',
password: 'password'
).open('127.0.0.1', 3306, 3307)
)
self.table_name = "wp_posts"
end
將 username, password, database, 等換成正確的之後,可以 rails c 打開 console 後測試看看,如無問題 WpPost.last 就會順利連線並取回最後一個 wp_post。
© Copyrights 從想像到創造. All Rights Reserved.