project.identifier (:project_id ではない) に対応する redmine セットアップでは、別のサーバーにフォルダーがあり、開発者はプロジェクトに関連する 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 を見つけるときに、現在のプロジェクトの識別子を見つける非常に簡単な方法があるはずです。