0

在我们的 redmine 设置中,对应于 project.identifier(不是 :project_id),我们在另一台服务器中有文件夹,开发人员存储与他们的项目相关的 mysql 数据库转储。我正在尝试编写一个仅显示所有数据库转储列表的插件。

为此,我最初尝试使用 net/ssh,然后插件登录到 db 转储所在的另一台服务器并执行 ls。我在插件视图的无序列表中显示 ls 输出。为此,我应该将 project.identifier 作为参数发送给 ls 以获取特定于该项目的转储列表。无法弄清楚如何通过 Net::SSH 发送局部变量。

然后我改变了使用 net/ssh 的想法,现在只需执行一个执行 ssh 和 ls 的本地脚本。现在我想再次使用 project.identifier 作为参数。如何将 project.identifier 的值作为参数传递给系统调用中的命令?

这是我的控制器。

require 'rubygems'
require 'net/ssh'

class BackupsController < ApplicationController
  helper :projects
  unloadable


  def index
  #host = '192.168.122.245'
  #user = 'root'
  #Net::SSH.start( host, user ) do |ssh|
  #@result = ssh.exec!('dumplist website')
  #end
  @identifier = "#{project.identifier}"
  @result = %x[dumpshow @identifier]
  end
end

dumpshow 是我运行 ssh 的脚本ls $1。我想将 project.identifier 作为 $1 发送

使用上面的脚本,我收到以下错误。 NameError (undefined local variable or method 'project' for #<BackupsController:0x7ff5b4a756a0>):

总而言之,我想使用 Redmine 的核心控制器和模型中的变量。这似乎很简单,但我在某处错过了它。或者当我们找到 USer.Current 时,应该有一种非常简单的方法来找到当前项目的标识符。

4

1 回答 1

0

我让它工作了。它只是参数 [:project_id]。我花了一些时间来了解 redmine 的词汇。我觉得开发文档有限。

于 2013-01-03T20:09:41.680 回答