Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
smug forum asshole
Jan 15, 2005

A MIRACLE posted:

What are the differences between these?
code:
<% ... %>
# and
<% ... -%>

I think the <% ... -%> version will keep a blank line from showing up in the resulting html?

Adbot
ADBOT LOVES YOU

Sharrow
Aug 20, 2007

So... mediocre.
Do you even need to do that anymore now erubis is the default erb parser? (haml 4 lyfe)

clockwork automaton
May 2, 2007

You've probably never heard of them.

Fun Shoe

smug forum rear end in a top hat posted:

I think the <% ... -%> version will keep a blank line from showing up in the resulting html?

Yeah, it trims the whitespace after.

Deus Rex
Mar 5, 2005

clockwork automaton posted:

Yeah, it trims the whitespace after.

I thought that
code:
<%= ... =%>
inserts the result of evaluating the expression inside the tag into the resulting HTML while
code:
<% ... %>
is for control/flow and other code that doesn't write to the document.

NotShadowStar
Sep 20, 2000
Yes but with old erb if you did <% if cond %> that line would leave a blank line into the output. Doing <%- if cond %> suppresses the line. Erubis, which Rails 3+ uses, doesn't leave blank lines and the <%- is unnecessary.

Deus Rex
Mar 5, 2005

NotShadowStar posted:

Yes but with old erb if you did <% if cond %> that line would leave a blank line into the output. Doing <%- if cond %> suppresses the line. Erubis, which Rails 3+ uses, doesn't leave blank lines and the <%- is unnecessary.

:doh: I can thank my crappy low-res display for making <%= look just like <%-

Tomed2000
Jun 24, 2002

I'm starting to use jQuery for the first time in Rails (first time ever, really) and I'm running into a weird problem. Does Firefox do something different than IE/Chrome when it comes to waiting for page responses? When I update some records with a jQuery remote form submit I notice that the records updated don't always reflect their changes after a page refresh in IE/Chrome but they do 100% of the time in FF. In the former browsers sometimes I have to do two page refreshes to see the changes. What gives?

Tomed2000 fucked around with this message at 20:48 on Aug 29, 2011

NotShadowStar
Sep 20, 2000
Sounds more like a jQuery thing than a Rails thing, post in the javascript or jquery thread along with your code that you're trying to do.

Tomed2000
Jun 24, 2002

NotShadowStar posted:

Sounds more like a jQuery thing than a Rails thing, post in the javascript or jquery thread along with your code that you're trying to do.

Thanks. I have another question that is probably more Rails related, though, so maybe someone can still help. I'm trying to figure out how to use check boxes to select multiple records and update them accordingly depending on what button a user presses (think GMail e.g., delete, archive, etc).

There's a really great Railscasts that introduced me to this functionality but I'm having trouble figuring out how to extend it to include more than one button. He essentially uses a form that includes a checkbox and the button but I don't want to have more than one checkbox! What is the best way to go about extending this functionality to include more buttons without adding the checkboxes?

Plastic Jesus
Aug 26, 2006

I'm cranky most of the time.
So...Rails 3.1 is scheduled to drop tomorrow. Anyone have a decent set of links for getting up to speed on things? So far I've not touched it and have just cobbled together info from the links in this 3 month old blog post. In particular I'd appreciate thorough write-ups of asset pipelines and engines.

enki42
Jun 11, 2001
#ATMLIVESMATTER

Put this Nazi-lover on ignore immediately!

Tomed2000 posted:

Thanks. I have another question that is probably more Rails related, though, so maybe someone can still help. I'm trying to figure out how to use check boxes to select multiple records and update them accordingly depending on what button a user presses (think GMail e.g., delete, archive, etc).

There's a really great Railscasts that introduced me to this functionality but I'm having trouble figuring out how to extend it to include more than one button. He essentially uses a form that includes a checkbox and the button but I don't want to have more than one checkbox! What is the best way to go about extending this functionality to include more buttons without adding the checkboxes?

One thing that a lot of people don't realize is that submit fields actually pass their value through to the server when they submit - I'm imagining you could do something like this pretty easily:

(view)
code:
<ul>
  <%= check_box_tag 'items[]', 1 %> Item 1
  <%= check_box_tag 'items[]', 2 %> Item 2
</ul>

<%= submit_tag "Delete" %>
<%= submit_tag "Archive" %>
(controller)
code:

items = Foo.find(params[:items])

# :commit is the default name of submit buttons in rails.
case params[:commit]
when 'Delete'
  items.delete_all
when 'Archive'
  items.archive_all
end
One caveat - if you're using AJAX to send the form you'll need to set another hidden field called commit manually, since it's not technically the submit button sending the form (even if you hook into the submit event of the form.) It's still a good approach even if you have to do this as it will degrade nicely if your user doesn't have JS running.

enki42 fucked around with this message at 12:35 on Aug 30, 2011

Tomed2000
Jun 24, 2002

enki42 posted:

One thing that a lot of people don't realize is that submit fields actually pass their value through to the server when they submit - I'm imagining you could do something like this pretty easily:

(view)
code:
<ul>
  <%= check_box_tag 'items[]', 1 %> Item 1
  <%= check_box_tag 'items[]', 2 %> Item 2
</ul>

<%= submit_tag "Delete" %>
<%= submit_tag "Archive" %>
(controller)
code:

items = Foo.find(params[:items])

# :commit is the default name of submit buttons in rails.
case params[:commit]
when 'Delete'
  items.delete_all
when 'Archive'
  items.archive_all
end
One caveat - if you're using AJAX to send the form you'll need to set another hidden field called commit manually, since it's not technically the submit button sending the form (even if you hook into the submit event of the form.) It's still a good approach even if you have to do this as it will degrade nicely if your user doesn't have JS running.

Cool, thanks!

Oh My Science
Dec 29, 2008
I know this was answered awhile back, but how can I speed up the load time of a heroku app?

Pretty sure it had something to do with installing new relic to keep your instance running... just wondering if there is another method.

A MIRACLE
Sep 17, 2007

All right. It's Saturday night; I have no date, a two-liter bottle of Shasta and my all-Rush mix-tape... Let's rock.

Oh My Science posted:

I know this was answered awhile back, but how can I speed up the load time of a heroku app?

Pretty sure it had something to do with installing new relic to keep your instance running... just wondering if there is another method.

Are you on a free account? They'll spin your dyno down if there's no activity for a few minutes.

Oh My Science
Dec 29, 2008

A MIRACLE posted:

Are you on a free account? They'll spin your dyno down if there's no activity for a few minutes.

Yes I am currently using a free account, and am willing to spend money to keep it running. I am / was under the impression that adding a dyno or worker would not prevent the instance from dropping.

Damnit I was going through the documentation and didn't find that. Thanks VVV

Oh My Science fucked around with this message at 18:47 on Aug 30, 2011

A MIRACLE
Sep 17, 2007

All right. It's Saturday night; I have no date, a two-liter bottle of Shasta and my all-Rush mix-tape... Let's rock.

looked it up. heroku has pretty extensive documentation.

heroku dev center posted:

What is dyno idling?
Apps that have only 1 web dyno will be idled out after a period of inactivity. The web dyno will be shut down. When a request comes in to an idled app your web dyno will be automatically spun back up, causing a few second delay for this first request. Subsequent requests will perform normally.

Apps that have more than 1 web dyno are never idled out. Workers dynos are never idled out.

enki42
Jun 11, 2001
#ATMLIVESMATTER

Put this Nazi-lover on ignore immediately!
In regards to the New Relic "trick", there's an availability monitor on NewRelic that will ping your server every 30 seconds or so - if you turn this on with a free instance, you'll never have enough idle time for Heroku to spin down your instances.

On a related question, does anyone have any hints for speeding up Heroku loadtime immediately after deploys? It's probably the biggest obstacle in our way to being able to deploy fairly continuously, since every deploy means that users are going to see a loading screen for 10-15 seconds.

Also, the migration setup is somewhat weird on Heroku - I'd really like to be able to do database migrations BEFORE deploying code (since 99% of the time they are additive, and code that doesn't know about the new columns will still happily work, whereas the converse is very rarely true.)

A MIRACLE
Sep 17, 2007

All right. It's Saturday night; I have no date, a two-liter bottle of Shasta and my all-Rush mix-tape... Let's rock.

enki42 posted:

Also, the migration setup is somewhat weird on Heroku - I'd really like to be able to do database migrations BEFORE deploying code (since 99% of the time they are additive, and code that doesn't know about the new columns will still happily work, whereas the converse is very rarely true.)

I suppose you could pull/migrate/push your db but that's not really a clean solution.

enki42
Jun 11, 2001
#ATMLIVESMATTER

Put this Nazi-lover on ignore immediately!

A MIRACLE posted:

I suppose you could pull/migrate/push your db but that's not really a clean solution.

Yeah no, I can't really count on the database not being changed while I'm going through that. I know it's probably an impossibility, it's just more than a little painful to deal with.

dustgun
Jun 20, 2004

And then the doorbell would ring and the next santa would come
Does anyone here run selenium tests over a dozen or so VMs? I'm gearing to finalize our setup (such as things can be finalized) and am interested if there are any oddball things I'm not thinking of that have tripped people up in the past.

Plastic Jesus
Aug 26, 2006

I'm cranky most of the time.

A MIRACLE posted:

looked it up. heroku has pretty extensive documentation.

Not idling worker dynos is really loving annoying. I realize it's only $34/month but it's dumb to wind down the free web dyno while leaving the worker dyno up, doing absolutely nothing.



Edit: So this happened. Read about it here.

Plastic Jesus fucked around with this message at 04:18 on Aug 31, 2011

Pardot
Jul 25, 2001




enki42 posted:

Yeah no, I can't really count on the database not being changed while I'm going through that. I know it's probably an impossibility, it's just more than a little painful to deal with.

It's an interesting (read: hard) problem. The safest thing is always going to be, maintenance mode, deploy, migrate, un maintenance mode.

If you're willing to do engineering work around it though, you could write your app to work with both schemas new and old, your app can run while the migrations are running. Especially if you use a good database like postgres (which you probably are if you're on us) , the alters can run in a transaction for extra awesome. That's hard to do though, especially with active record out of the box.

Pardot fucked around with this message at 22:16 on Dec 8, 2013

Pardot
Jul 25, 2001




Also, if you wanted, I suppose you could copy your DATABASE_URL to a second app, and run migrations off of that second app. You'd still need to make sure your code ran on both versions. lovely experience though, but something to consider.

Juz
Sep 18, 2004

Jesus is fucking metal.
Not sure if this is an acceptable place for general Ruby questions, but I can't find any other Ruby thread so figured I'd try here.

Looking at the source for the Net::FTP.gettextfile method (http://ruby-doc.org/stdlib/libdoc/net/ftp/rdoc/classes/Net/FTP.html#M001274), I can't see how you can end up with the "localfile" argument as nil. Am I missing something here?

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Juz posted:

Not sure if this is an acceptable place for general Ruby questions, but I can't find any other Ruby thread so figured I'd try here.

Looking at the source for the Net::FTP.gettextfile method (http://ruby-doc.org/stdlib/libdoc/net/ftp/rdoc/classes/Net/FTP.html#M001274), I can't see how you can end up with the "localfile" argument as nil. Am I missing something here?

What's the context of the question? What are you trying to do?

Juz
Sep 18, 2004

Jesus is fucking metal.
I'm trying to use that function to return the contents of a file from the FTP server into a variable rather than write it to a file. The comment for the function says "If localfile is nil, returns retrieved data" and it looks from the source like the intention is there to be able to do this, but I can't see how you can do this given that it sets localFile = File.basename(remotefile) in the argument list.

I thought I might be able to do gettextfile(my_remotefile, nil), but ruby complains about converting "nil" to a string.

Soup in a Bag
Dec 4, 2009

Juz posted:

I'm trying to use that function to return the contents of a file from the FTP server into a variable rather than write it to a file. The comment for the function says "If localfile is nil, returns retrieved data" and it looks from the source like the intention is there to be able to do this, but I can't see how you can do this given that it sets localFile = File.basename(remotefile) in the argument list.

I thought I might be able to do gettextfile(my_remotefile, nil), but ruby complains about converting "nil" to a string.

Which version of Ruby are you using? That documentation link from your earlier post is for 1.9. In 1.8, #gettextfile doesn't have the option of not writing to a file and passing nil would result in the error you're getting.

e: But in 1.9 what you're attempting would work.

Soup in a Bag fucked around with this message at 17:25 on Sep 7, 2011

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Juz posted:

I'm trying to use that function to return the contents of a file from the FTP server into a variable rather than write it to a file. The comment for the function says "If localfile is nil, returns retrieved data" and it looks from the source like the intention is there to be able to do this, but I can't see how you can do this given that it sets localFile = File.basename(remotefile) in the argument list.

Default arguments only happen if the argument isn't given, not if it's nil.
code:
irb(main):001:0> RUBY_VERSION
=> "1.9.2"
irb(main):002:0> def fart(butt=555)
irb(main):003:1>   butt.inspect
irb(main):004:1> end
=> nil
irb(main):005:0> fart
=> 555
irb(main):006:0> fart(nil)
=> nil

Juz
Sep 18, 2004

Jesus is fucking metal.

Soup in a Bag posted:

Which version of Ruby are you using? That documentation link from your earlier post is for 1.9. In 1.8, #gettextfile doesn't have the option of not writing to a file and passing nil would result in the error you're getting.

e: But in 1.9 what you're attempting would work.

Ok, looks like this is the problem, I'm on 1.8.7. Thanks for the help.

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!

Any suggestions for a captcha setup that works well with Ruby?

Basically looking to slow down a brute-force login attempt by adding it as a requirement after say, 4 failed logins. Ideas other than a captcha would be entertained as well, account lockout for a period of time, and making each login take longer to process than the previous one have been ruled out.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Bob Morales posted:

Any suggestions for a captcha setup that works well with Ruby?

Basically looking to slow down a brute-force login attempt by adding it as a requirement after say, 4 failed logins. Ideas other than a captcha would be entertained as well, account lockout for a period of time, and making each login take longer to process than the previous one have been ruled out.

http://rubygems.org/gems/recaptcha

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!


Thanks. https://github.com/kiskolabs/humanizer was suggested, but it only works with Rails 3. Our newest app is on Rails 3 but the rest are on 2, and it'd be nice to use the same thing in the older apps if that need arises.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Bob Morales posted:

Thanks. https://github.com/kiskolabs/humanizer was suggested, but it only works with Rails 3. Our newest app is on Rails 3 but the rest are on 2, and it'd be nice to use the same thing in the older apps if that need arises.

I'm pretty sure I've used the recaptcha gem in both 2 and 3 apps.

kitten smoothie
Dec 29, 2001

OK, I really screwed up here. I'm using the Mongoid ORM here, and stupidly set up documents as being referenced when they should have been embedded. Now I'm having performance problems now that the data is growing and I've seeing the error in my ways.

What's the best way to pick up the documents and embed them into their parents-to-be? The object IDs correspond to files stored on Amazon S3 so I certainly don't want to lose those.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

kitten smoothie posted:

OK, I really screwed up here. I'm using the Mongoid ORM here, and stupidly set up documents as being referenced when they should have been embedded. Now I'm having performance problems now that the data is growing and I've seeing the error in my ways.

What's the best way to pick up the documents and embed them into their parents-to-be? The object IDs correspond to files stored on Amazon S3 so I certainly don't want to lose those.

Loop through the documents, follow the reference, jam their contents into an embedded field.

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!

We now have two Rails 3 apps. When we deployed the first one, it ate all our memory and crashed the server. The second one did the same thing the other day.

code:
top - 09:59:10 up 2 days, 23:47,  2 users,  load average: 3.37, 3.10, 2.74
Tasks: 275 total,   4 running, 271 sleeping,   0 stopped,   0 zombie
Cpu(s): 60.6%us,  1.7%sy,  0.5%ni, 37.0%id,  0.0%wa,  0.1%hi,  0.2%si,  0.0%st
Mem:  12299892k total, 11967104k used,   332788k free,   259992k buffers
Swap:  2096472k total,    40036k used,  2056436k free,  3296240k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15116 deploy    19   0  241m 136m 4108 R 89.8  1.1   0:05.96 ruby                                                 
14611 deploy    15   0  434m 280m 5084 R 47.9  2.3   0:21.82 ruby 
14709 deploy    17   0  379m 268m 3004 S 39.2  2.2   0:17.67 ruby                                                                            
14346 deploy    16   0  251m 141m 2796 S 37.6  1.2   0:27.93 ruby                                                                            
15053 deploy    16   0  252m 140m 2744 S 33.2  1.2   0:08.40 ruby                                                                            
13044 deploy    16   0  308m 197m 2800 S 24.6  1.6   0:37.59 ruby                                                                            
13089 deploy    19   0  328m 155m 4976 S 16.6  1.3   0:25.35 ruby                                                                            
14867 deploy    16   0  247m 136m 2788 S  9.3  1.1   0:24.02 ruby                                                                            
13047 deploy    16   0  251m 140m 2808 R  4.3  1.2   0:49.01 ruby                                                                            
 1734 deploy    20   5  267m 132m 4180 S  2.7  1.1   4:17.45 ruby                                                                            
14603 deploy    16   0  397m 247m 4844 S  2.7  2.1   0:18.23 ruby                                                                            
 7765 deploy    16   0  244m  94m 6524 S  1.0  0.8   0:09.54 ruby                                                                            
15845 deploy    15   0  298m 147m 4356 S  1.0  1.2   3:17.53 ruby                                                                            
14349 deploy    15   0  257m 146m 3296 S  0.7  1.2   1:04.06 ruby                                                                            
   12 root      10  -5     0    0    0 S  0.3  0.0   1:02.58 events/0                                                                        
 3353 deploy    15   0  234m  85m 4644 S  0.3  0.7   0:13.14 ruby                                                                            
 4145 root      23   0  119m 1052  896 S  0.3  0.0   0:00.66 automount                                                                       
 8467 deploy    15   0  196m  91m 3204 S  0.3  0.8   0:09.55 ruby                                                                            
13179 apache    15   0  302m  14m 3372 S  0.3  0.1   0:01.39 httpd                                                                           
13983 apache    15   0  313m  15m 4408 S  0.3  0.1   0:01.05 httpd                                                                           
14063 apache    15   0  302m  14m 3980 S  0.3  0.1   0:00.79 httpd                                                                           
14608 apache    15   0  302m  14m 3812 S  0.3  0.1   0:00.38 httpd                                                                           
14619 apache    15   0  362m  21m 5164 S  0.3  0.2   0:00.45 httpd                                                                           
14621 apache    15   0  305m  17m 3796 S  0.3  0.1   0:00.50 httpd                                                                           
14647 apache    15   0  302m  14m 3696 S  0.3  0.1   0:00.31 httpd                                                                           
14933 deploy    15   0 12880 1244  824 R  0.3  0.0   0:00.31 top                                                                             
14981 apache    15   0  302m  14m 3576 S  0.3  0.1   0:00.09 httpd                                                                           
14990 apache    15   0  302m  13m 2968 S  0.3  0.1   0:00.11 httpd                                                                           
    1 root      15   0 10356  596  560 S  0.0  0.0   0:01.72 init                                                                            
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:01.98 migration
This is from another dev who I've been trying to troubleshoot the issue with:

Rails 3.0.7 (new app 1) uses considerably more memory than Rails 3.0.9 (new app 2) -- but neither is as good as Rails 2.x or 1.x in terms of memory usage.

For example, after serving 333 requests, one <old app> process (a Rails 2.x app) is using 69MB of RAM. On the other hand, after serving 64 requests, one <new app 1> orocess (a Rails 3.0.7 app) is using 207MB of RAM. I chose those two apps because they have so much in common that it seems like the only difference is the Rails framework.

I set passenger to kill (new app 1) processes after 75 requests. It looks like a bunch of memory is eaten on each request and it's not released. But if you kill the process, then the OS will reclaim the memory.

No idea what's causing it though. It's (new app 1)-specific because (new app 2) is a Rails-3 app that does not have any problems.

Memory leak of some sort? Garbage collection??

Rackspace wants a good-sized amount of money to add another 24GB to our server (split into 12gb app, 12gb db VM's)

But if we signed up another big customer or deploy a third rails 3 app, we'll just be eating up a ton more memory anyway.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug
What Ruby implementation? 37signals uses 1.9.3dev to get tunable garbage collection for speed; REE has the same tuning options but is 1.8.7. Either of these will be better with Passenger than straight 1.8.7 or 1.9.2 due to the way gc and forking interact.

You might also want to test a different app server configuration; passenger has lots of knobs and dials you can play with, and unicorn has some too.

Finally, there's a reason lots of apps just go to Heroku; scaling is done by adjusting a "how much money you want to spend" slider in real-time.

skidooer
Aug 6, 2001

Bob Morales posted:

Memory leak of some sort? Garbage collection??
Ruby retains and reuses its allocated memory, so if you need 200MB of memory at one point in time, the interpreter will allocate that and not release it back to the system. Make sure you're not doing anything like loading thousands of rows into ActiveRecord instances, or reading entire images into memory; stuff like that.

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!

Ruby 1.8.7 (2009-12-24 patchlevel 248) Ruby Enterprise Edition 2010.01
Passenger 3.0.7

I am looking at setting up memprof right now, I'm just not sure what could I should be checking (or what the easiest way to check all of it is)

Adbot
ADBOT LOVES YOU

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!

code:
[deploy@www-prod-test] $ memprof --pid 26502 --key ASDFQWERT --name 470M -t --put-my-data-on-the-internet
Memprof Uploader
[url]http://www.memprof.com[/url]
======================

Signaled process 26502 with SIGURG
Waiting 30 seconds for process 26502 to create a new dump...
Usage:
    -p, --pid <pid>                  PID of the process to dump       (required)
    -n, --name <name>                Name for your dump               (required)
    -k, --key <key>                  Memprof.com API key              (required)
    -d, --[no-]delete                Delete dump file after uploading (default true)
    -s, --seconds <seconds>          Seconds to wait for the dump     (default 300)
    -t, --[no-]test                  Test run (don't actually upload) (default false)
    -f, --file <path>                Upload specific json dump        (optional)
        --put-my-data-on-the-internet
                                     Confirm that you understand
                                     memprof.com will show all your            
                                     internal data on the internet    (required)
        --info

Timed out after waiting 30 seconds. Make sure you added require '/usr/local/lib/ruby/gems/1.8/gems/memprof-0.3.10/lib/memprof/signal' to your application.
I put the 'require memprof' line (like it is in the error message) as the very first line in my environment.rb - is there something else I have to do other than a touch tmp/restart.txt?

Also memprof.com isn't working so I don't know if that's part of the error, I'm trying to just get it to dump to a file by giving a made-up key and using the -f option

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply