在我们的 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 时,应该有一种非常简单的方法来找到当前项目的标识符。