Write a copy of the current script

D

dkmd_nielsen

I would like to write a copy of the current script being executed.
I've attempted to use __FILE__ and $0, but neither is returning the
full path name of script. I get the file name, but not the path in
which it resides. Anyone have a quick solution?

def initialize
@script = $0 # Save where the script is from
puts "[#{@script}]"
end

returns "[AAN_StandardSetup.rb]"


The script being run is a process setup, where the operations people
fill in script parameters. The script then creates folder structures
and performs particular functions. I want to save a copy of the
script after the operations people have completed filling everything
in. It would be saved in one of the folders created by the execution
of the script. That's my dilemma...I want to save it somewhere after
it has started executing.

Tips and suggestions are appreciated.
dvn
 
C

Christopher Dicely

Is there a particular reason you are having the "operations people"
modify the script directly rather than having them modify a
configuration file of some kind that the script reads? If there is a
fixed set of parameters that need changed, reading them from a file is
cleaner (YAML would be a good choice, here) than modifying the script,
and then you can just copy the config file to an archive location when
you load it.

Other than that, the only thing I can think of off the top of my head
is having the script that is being edited not be the main script, but
instead be required by a wrapper script that uses SCRIPT_LINES__ to
capture the contents of the required file, and then archives it
somewhere.
 
D

dkmd_nielsen

Is there a particular reason you are having the "operations people"
modify the script directly rather than having them modify a
configuration file of some kind that the script reads? If there is a
fixed set of parameters that need changed, reading them from a file is
cleaner (YAML would be a good choice, here) than modifying the script,
and then you can just copy the config file to an archive location when
you load it.

Other than that, the only thing I can think of off the top of my head
is having the script that is being edited not be the main script, but
instead be required by a wrapper script that uses SCRIPT_LINES__ to
capture the contents of the required file, and then archives it
somewhere.

I would like to write a copy of the current script being executed.
I've attempted to use __FILE__ and $0, but neither is returning the
full path name of script. I get the file name, but not the path in
which it resides. Anyone have a quick solution?
def initialize
@script = $0 # Save where the script is from
puts "[#{@script}]"
end
returns "[AAN_StandardSetup.rb]"
The script being run is a process setup, where the operations people
fill in script parameters. The script then creates folder structures
and performs particular functions. I want to save a copy of the
script after the operations people have completed filling everything
in. It would be saved in one of the folders created by the execution
of the script. That's my dilemma...I want to save it somewhere after
it has started executing.
Tips and suggestions are appreciated.
dvn

It's a dog chasing its tail. The script is a configuration file. And
the scripts job is to simplify the creation of the production folder
structure, copy an applications configuration file, update its
contents with user specified values and the folder structure
information, and then execute the application. Using the script
method was easier to implement. The operations people load the
script, change some values, press "F5" to execute the script, and
they're done. The other scenario would involve them locating the
configuration file, updating it and saving it, going somewhere else
for the script, updating it and then running it.

I know it sounds piddly...but trust me. The operations people aren't
developers. They're not the sharpest knives in the drawer. The
company keeps pushing us to dumb things down so they can use less and
less skilled people to do the work.

Thanks
 
J

Joel VanderWerf

dkmd_nielsen said:
I would like to write a copy of the current script being executed.
I've attempted to use __FILE__ and $0, but neither is returning the
full path name of script. I get the file name, but not the path in
which it resides. Anyone have a quick solution?

def initialize
@script = $0 # Save where the script is from
puts "[#{@script}]"
end

returns "[AAN_StandardSetup.rb]"

File.expand_path(__FILE__)
File.expand_path($0)
 
D

dkmd_nielsen

dkmd_nielsen said:
I would like to write a copy of the current script being executed.
I've attempted to use __FILE__ and $0, but neither is returning the
full path name of script. I get the file name, but not the path in
which it resides. Anyone have a quick solution?
def initialize
@script = $0 # Save where the script is from
puts "[#{@script}]"
end
returns "[AAN_StandardSetup.rb]"

File.expand_path(__FILE__)
File.expand_path($0)

I tried that. I got the dataset name and that's it. Is it an O/S
thing?

Thanks, dvn
 
J

Joel VanderWerf

dkmd_nielsen said:
dkmd_nielsen said:
I would like to write a copy of the current script being executed.
I've attempted to use __FILE__ and $0, but neither is returning the
full path name of script. I get the file name, but not the path in
which it resides. Anyone have a quick solution?
def initialize
@script = $0 # Save where the script is from
puts "[#{@script}]"
end
returns "[AAN_StandardSetup.rb]"
File.expand_path(__FILE__)
File.expand_path($0)

I tried that. I got the dataset name and that's it. Is it an O/S
thing?

What do you mean by dataset?

What OS are you using?
 
7

7stud --

dkmd_nielsen said:
returns "[AAN_StandardSetup.rb]"

File.expand_path(__FILE__)
File.expand_path($0)

I tried that. I got the dataset name and that's it. Is it an O/S
thing?

Let's find out. mac osx 10.4.7:

puts File.expand_path(__FILE__)
puts File.expand_path($0)

--output:--
/Users/me/2testing/dir1/r1test.rb
/Users/me/2testing/dir1/r1test.rb
 
C

Christopher Dicely

Looking through _The Ruby Way_ for something else, I ran into
something that could be used here. If you end the source of your
script with an __END__ marker, you can call DATA.rewind (DATA is a
global constant IO object for the source file that starts out at a
position just after the __END__) and then access the source code of
through DATA.

Is there a particular reason you are having the "operations people"
modify the script directly rather than having them modify a
configuration file of some kind that the script reads? If there is a
fixed set of parameters that need changed, reading them from a file is
cleaner (YAML would be a good choice, here) than modifying the script,
and then you can just copy the config file to an archive location when
you load it.

Other than that, the only thing I can think of off the top of my head
is having the script that is being edited not be the main script, but
instead be required by a wrapper script that uses SCRIPT_LINES__ to
capture the contents of the required file, and then archives it
somewhere.

I would like to write a copy of the current script being executed.
I've attempted to use __FILE__ and $0, but neither is returning the
full path name of script. I get the file name, but not the path in
which it resides. Anyone have a quick solution?
def initialize
@script = $0 # Save where the script is from
puts "[#{@script}]"
end
returns "[AAN_StandardSetup.rb]"
The script being run is a process setup, where the operations people
fill in script parameters. The script then creates folder structures
and performs particular functions. I want to save a copy of the
script after the operations people have completed filling everything
in. It would be saved in one of the folders created by the execution
of the script. That's my dilemma...I want to save it somewhere after
it has started executing.
Tips and suggestions are appreciated.
dvn

It's a dog chasing its tail. The script is a configuration file. And
the scripts job is to simplify the creation of the production folder
structure, copy an applications configuration file, update its
contents with user specified values and the folder structure
information, and then execute the application. Using the script
method was easier to implement. The operations people load the
script, change some values, press "F5" to execute the script, and
they're done. The other scenario would involve them locating the
configuration file, updating it and saving it, going somewhere else
for the script, updating it and then running it.

I know it sounds piddly...but trust me. The operations people aren't
developers. They're not the sharpest knives in the drawer. The
company keeps pushing us to dumb things down so they can use less and
less skilled people to do the work.

Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,979
Messages
2,570,185
Members
46,723
Latest member
TwilaTarde

Latest Threads

Top