はじめに、私は「新しい」プログラマーであると述べましょう。IT担当者は、さまざまなチュートリアルを実行した後、最初の「実際の」問題に取り組んでいます。
だから-これが私がやろうとしていることです。.csvファイルのディレクトリを監視しています-次の形式になります:999999_888_filename.csv
「_」ファイル名の各部分を変数として返し、他のタスクのために別のプログラム/スクリプトに渡します。私は次のコードで思いついた:
require 'rubygems'
require 'fssm'
class Watcher
def start
monitor = FSSM::Monitor.new(:directories => true)
monitor.path('/data/testing/uploads') do |path|
path.update do |base, relative, ftype|
output(relative)
end
path.create do |base, relative, ftype|
output(relative)
end
path.delete { |base, relative, ftype| puts "DELETED #{relative} (#{ftype})" }
end
monitor.run
end
def output(relative)
puts "#{relative} added"
values = relative.split('_',)
sitenum = values[0]
numrecs = values[1]
filename = values[2]
puts sitenum
end
end
最初の「puts」は完全なファイル名を提供し(スクリプトが機能していることを示すためだけにあります)、2番目のputsは「sitenum」を返します。この出力メソッドの「外部」にアクセスできるようにしたいと思います。このファイル(watcher.rbという名前)はlibs /フォルダーにあり、プロジェクトルートには「monitor.rb」という2番目のファイルがあります。このファイルには次のものが含まれています。
require './lib/watcher'
watcher = Watcher.new
watcher.start
そして、このファイルから「sitenum」、「numrecs」、「filename」にアクセスする方法がわかりません。変数である必要があるのか、インスタンス変数である必要があるのか、それとも何である必要があるのかわかりません。attr_accessibleなどで遊んだことがありますが、何も機能しません。私はいくつかのことのために自分の車輪を回しているので、ここで尋ねることに決めました、そして私は自分自身で検索することによって自分自身を混乱させ始めています。
あなたが持っているかもしれないどんな助けやアドバイスにも前もって感謝します。