Thanks Jamis. No problem for the delay, I'm very happy to help, if just with a little patch.
--mathieul On Feb 3, 2007, at 6:38 PM, Jamis Buck wrote: > > Mathieu, > > This has been applied. I apologize for not getting it in before > releasing 1.4.0--I'll collect a few more patches and do 1.4.1 in a > week or so. > > - Jamis > > On Jan 24, 2007, at 1:02 PM, Mathieu Lajugie wrote: > >> >> Great! I have posted the patch (against version 1.3.1), it is >> available at http://dev.rubyonrails.org/ticket/7223 >> >> It adds the environment in the Command initialization, so it works >> for all commands. >> >> Let me know if you would like any change to the patch. I have not >> created any test for instance, but I could do that if you wish. >> >> --mathieul >> >> >> On Jan 24, 2007, at 10:55 AM, Jamis Buck wrote: >> >>> >>> Mathieu, >>> >>> I'm all for user patches, seriously. And your suggestion looks very >>> nice. Please do send in a patch for that. Could you also make it so >>> that the run command accepts the same :env hash? That way both work >>> the same and expectations aren't broken. Thanks! >>> >>> - Jamis >>> >>> On Jan 24, 2007, at 8:42 AM, Mathieu Lajugie wrote: >>> >>>> The small patch I made allows to pass a hash of variables that are >>>> escaped and set in the run command. So it works for run/sudo/ >>>> stream. For instance: >>>> >>>> task :my_test, :roles => :scripting do >>>> sudo "env", :env => {'PATH' => '/foo/bar'} >>>> end >>>> >>>> Would it make sense for you to include the feature in Capistrano? >>>> What is your policy with including user patches? >>>> >>>> Thanks, >>>> >>>> --mathieul >>>> >>>> >>>> On Jan 23, 2007, at 3:29 PM, Jamis Buck wrote: >>>> >>>>> >>>>> Environment variables can be set as you described when using >>>>> "run". >>>>> Unfortunately, it's trickier when using sudo. :( For now, the >>>>> easiest >>>>> way to do it with sudo is to create a shell script that sets the >>>>> environment and runs the commands, and invoke that script via >>>>> sudo. >>>>> >>>>> You can always do: >>>>> >>>>> run "PATH=/foo/bar sudo env" >>>>> >>>>> but the problem with that approach is that Capistrano doesn't know >>>>> you're running sudo, and so won't know to prompt for a password >>>>> and >>>>> such. :( >>>>> >>>>> - Jamis >>>>> >>>>> On Jan 23, 2007, at 3:55 PM, Mathieu Lajugie wrote: >>>>> >>>>>> >>>>>> It works great, thanks! >>>>>> >>>>>> I guess I should have looked at the changelog first... >>>>>> >>>>>> Is there also a way to set environment variables before running a >>>>>> command, like PATH? It is ok to do: >>>>>> >>>>>> run "PATH=/my/path/to/bin:$PATH env | grep PATH" >>>>>> >>>>>> But doing the same with sudo fails because: >>>>>> >>>>>> sudo "PATH=/my/path/to/bin:$PATH env | grep PATH" >>>>>> >>>>>> executes: >>>>>> >>>>>> run "sudo PATH=/my/path/to/bin:$PATH env | grep PATH" >>>>>> >>>>>> when it actually should execute: >>>>>> run "PATH=/my/path/to/bin:$PATH sudo env | grep PATH" >>>>>> >>>>>> Thanks again for Capistrano, your blog and Rails! >>>>>> >>>>>> >>>>>> --mathieul >>>>>> >>>>>> >>>>>> On Jan 23, 2007, at 12:24 PM, Jamis Buck wrote: >>>>>> >>>>>>> >>>>>>> mathieul, >>>>>>> >>>>>>> You can actually do this: >>>>>>> >>>>>>> task :my_test, :hosts => "linux7" do >>>>>>> ... >>>>>>> end >>>>>>> >>>>>>> That will then execute that task _specifically_ and _only_ on >>>>>>> the >>>>>>> linux7 host. Does that work for you? >>>>>>> >>>>>>> - Jamis >>>>>>> >>>>>>> On Jan 23, 2007, at 12:18 PM, mathieul wrote: >>>>>>> >>>>>>>> >>>>>>>> Hello, >>>>>>>> >>>>>>>> I'm pretty new to using Capistrano (but pretty addicted >>>>>>>> already) >>>>>>>> so I >>>>>>>> apologize in advance if this topic has been answered many times >>>>>>>> already. >>>>>>>> >>>>>>>> I am trying to get our company to start using Ruby. One of the >>>>>>>> components I am trying to replace is cfengine. I think that >>>>>>>> Capistrano >>>>>>>> would be much more powerful, simple and easy to maintain (we >>>>>>>> are >>>>>>>> only >>>>>>>> using cfengine for deploying our application). >>>>>>>> >>>>>>>> One of the typical tasks we do is to check if one of our >>>>>>>> package is >>>>>>>> installed (a rpm for instance), and if yes what is its >>>>>>>> version. >>>>>>>> Based >>>>>>>> on the result, we will or not upload the RPM and install/update >>>>>>>> it. We >>>>>>>> don't want to do it no matter what, there can be a lot of >>>>>>>> packages to >>>>>>>> potentially install on 20 servers. >>>>>>>> >>>>>>>>> From what I understand of Capistrano philosophy, a command >>>>>>>>> can be >>>>>>>> executed on a list of servers determined by their roles and >>>>>>>> optionally >>>>>>>> additional attributes. I didn't find a way to limit a >>>>>>>> run/stream/sudo/put/delete command to a list of servers >>>>>>>> built at >>>>>>>> runtime. >>>>>>>> >>>>>>>> So I have written a patch (http://dev.rubyonrails.org/ticket/ >>>>>>>> 7223: >>>>>>>> Allow to set environment variables and limit the list of >>>>>>>> servers >>>>>>>> when >>>>>>>> running a remote command) to do just that (it also allow to set >>>>>>>> environment variables). Is there an easier built-in way to do >>>>>>>> that? If >>>>>>>> not, do you think it is the right way to implement it? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> --mathieul >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> >>>>>>>> >>>>>> >>>>>> >>>>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>>> >>> >>> >>>> >> >> >>> > > > > --~--~---------~--~----~------------~-------~--~----~ To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/capistrano -~----------~----~----~----~------~----~------~--~---
