小编rm-*_*-rf的帖子

如何在ruby中创建ssh隧道,然后连接到远程主机上的mysql服务器

我想创建一个ruby脚本,我可以通过ssh隧道在远程服务器上运行mysql命令.

现在我有一个手动过程来执行此操作:

  1. 创建一个隧道 - > ssh -L 3307:127.0.0.1:3306
  2. 运行ruby脚本.
  3. 关闭隧道.

我希望能够自动化这个,所以我可以运行脚本.

例:

require 'rubygems'   
require 'net/ssh/gateway'  
require 'mysql'  


#make the ssh connection -> I don't think I am doing this right.

Net::SSH.start('server','user') do |session|

  session.forward.local(3307,'127.0.0.1', 3306)<br>
  mysql = Mysql.connect("127.0.0.1","root","","",3307)

  dbs = mysql.list_dbs<br>
  dbs.each do |db|<br>
    puts db <br>
  end

  session.loop(0){true}<br>
end
Run Code Online (Sandbox Code Playgroud)

更新 - 2010-11-10:
我真的很接近这个代码:

require 'rubygems'  
require 'mysql'  
require 'net/ssh/gateway'  

gateway = Net::SSH::Gateway.new("host","user",{:verbose => :debug})
port = gateway.open("127.0.0.1",3306,3307)

#  mysql = Mysql.connect("127.0.0.1","user","password","mysql",3307)  
#  puts "here"  
#  mysql.close  

sleep(10)  
gateway.close(port) …
Run Code Online (Sandbox Code Playgroud)

ruby mysql ssh

28
推荐指数
2
解决办法
2万
查看次数

使用has_many:通过和构建

我有三个模型,全部用于has_many:通过关系.它们看起来像这样:

class Company < ActiveRecord::Base

  has_many :company_users, dependent: :destroy
  has_many :users, through: :company_users

  accepts_nested_attributes_for :company_users, :users

end

class CompanyUser < ActiveRecord::Base
  self.table_name = :companies_users #this is because this was originally a habtm relationship
  belongs_to :company
  belongs_to :user
end

class User < ActiveRecord::Base
  # this is a devise model, if that matters

  has_many :company_users, dependent: :destroy
  has_many :companies, through: :company_users

  accepts_nested_attributes_for :company_users, :companies

end
Run Code Online (Sandbox Code Playgroud)

这个加载很好,并且连接可以很好地用于查询.但是,每当我做某事时

@company = Company.last
@user = @company.users.build(params[:user])

@user.save    #=> true
@company.save #=> true
Run Code Online (Sandbox Code Playgroud)

无论是User记录和CompanyUser …

ruby ruby-on-rails has-many-through

9
推荐指数
3
解决办法
2万
查看次数

伪造没有数据库的活动记录模型

我觉得我得错过了一些东西.我正在编写一个ruby gem,它允许与活动记录交互作为其主要功能的补充.

在为它编写测试用例时,我需要能够指定虚拟活动记录模型来测试此功能.如果我能得到一个活动记录模型的实例,它不需要任何与db的连接,可能有关系,所有这些东西,但不需要我在数据库中设置表,这将是极好的.我对测试很陌生,除了测试之外,我还很新,但看起来我应该能够很容易地做到这一点,但我找不到任何东西.

谁能告诉我我错过了什么?我看过工厂,制造商,固定装置,所有那些似乎想要打到数据库.人们如何测试你需要AR对象的宝石只用于测试?

ruby testing gem activerecord

5
推荐指数
1
解决办法
7613
查看次数

OAuth 使用者是否在每个请求上使用 OAuth 提供者验证不记名令牌

为了了解有关 OAuth 的更多信息,我正在尝试编写一个 OAuth 2.0 提供者和消费者。

我有点使用Doorkeeper Gem作为我的提供商的参考,但我想编写自己的。

我的问题是关于规范第 1.3 节中关于不记名代币的最后一个项目符号。

(F) 资源服务器验证访问令牌,如果有效,则为请求提供服务。

在这种情况下,确实The resource server validates the access token意味着:

  • 根据其自己本地存储的访问令牌副本及其过期时间检查访问令牌
  • 向提供者服务器发出请求,该服务器返回有效/无效的响应?
  • 完全做其他事情

authorization ruby-on-rails oauth-2.0

3
推荐指数
1
解决办法
1117
查看次数

如何以编程方式显示Safari Extension popover

我正在尝试编写一个Safari扩展,它包含主工具栏上的一个按钮,上面有一个弹出窗口,以及一个上下文菜单项.基本感觉是在1Password扩展感觉之后建模的.

popover的一个工作是允许一个人登录.我也有条件地改变上下文菜单项的动作,如果一个人没有登录,点击菜单项我想显示popover允许他们登录,但我找不到在开发人员指南中执行此操作的方法.

我如何"显示"一个弹出窗口?

safari-extension

2
推荐指数
1
解决办法
2578
查看次数