$LOAD_PATH and different OSes

Discussion in 'Ruby' started by Greg Willits, Oct 22, 2008.

  1. Greg Willits

    Greg Willits Guest

    Looking for best practice guidance on dealing with differing paths to
    libraries & gems amongst OSes.

    I can write some reasonably decent Ruby at this point, but still a
    padawan when it comes to really understanding the whole *nix ENV thing.

    I get that ruby has some default places it looks, and that I can
    manually add paths to $LOAD_PATH, but now I'm starting to develop and
    deploy on different OSes, and I find that my dev system finds libs and
    gems that my server doesn't find.

    I can use symlinks to force common paths, or I can put both dev and
    server paths into $LOAD_PATHS, but both of these methods are obviously
    hokey. I bet there's a better way, and I bet that somehow it involves
    paths in etc/profile file, but just not sure how it all goes together.
    Is setting path vars in profile on multiple machines really any better
    than setting up symlinks? It's still customizing each box (automation is
    my friend I know).

    I have at least found #!/usr/bin/env ruby to get past hard coded paths
    for that.

    dev system = OS X 10.4, servers will be 10.4, 10.5, and sometimes Cent
    OS variants.

    So, any suggestions for the Right Wayâ„¢ ?

    -- gw
    --
    Posted via http://www.ruby-forum.com/.
    Greg Willits, Oct 22, 2008
    #1
    1. Advertising

  2. Greg Willits

    Martin Boese Guest

    I suggest to use rubygems, even if you don't write libraries or plan to=20
    publish your program.

    Your layout then should look something like:
    =2E
    |-- bin
    |-- lib
    | `-- your_project_name
    `-- tests

    Now, for all executables that are in 'bin' first line of code:

    $: << File.expand_path(File.dirname(__FILE__) + '/../lib')

    This allows you to run the development code, but once installed it will use=
    =20
    the installed files from rubygems.

    To deploy, just 'gem install your_project.gem' .. your libs will be found a=
    nd=20
    the executables are copied in the right place no matter which OS (assuming=
    =20
    your gemspec file defines 'bindir' and 'executables').

    Martin




    On Wednesday 22 October 2008 07:21:03 Greg Willits wrote:
    > Looking for best practice guidance on dealing with differing paths to
    > libraries & gems amongst OSes.
    >
    > I can write some reasonably decent Ruby at this point, but still a
    > padawan when it comes to really understanding the whole *nix ENV thing.
    >
    > I get that ruby has some default places it looks, and that I can
    > manually add paths to $LOAD_PATH, but now I'm starting to develop and
    > deploy on different OSes, and I find that my dev system finds libs and
    > gems that my server doesn't find.
    >
    > I can use symlinks to force common paths, or I can put both dev and
    > server paths into $LOAD_PATHS, but both of these methods are obviously
    > hokey. I bet there's a better way, and I bet that somehow it involves
    > paths in etc/profile file, but just not sure how it all goes together.
    > Is setting path vars in profile on multiple machines really any better
    > than setting up symlinks? It's still customizing each box (automation is
    > my friend I know).
    >
    > I have at least found #!/usr/bin/env ruby to get past hard coded paths
    > for that.
    >
    > dev system =3D OS X 10.4, servers will be 10.4, 10.5, and sometimes Cent
    > OS variants.
    >
    > So, any suggestions for the Right Way=E2=84=A2 ?
    >
    > -- gw
    Martin Boese, Oct 22, 2008
    #2
    1. Advertising

  3. Greg Willits

    Greg Willits Guest

    Martin Boese wrote:
    > I suggest to use rubygems, even if you don't write libraries or plan to
    > publish your program.


    I have considered gems (still unsure how to 'serve' them privately), but
    since you brought it up, the scenario that prompted this message was
    that it was precisely an installed gem that was causing my problems --
    the mysql one.

    I installed it on a fresh server and discovered that it was not
    automatically being found (but it was being found on my dev box). I
    output $LOAD_PATH and AFAICT there were no paths that pointed to any GEM
    folders, so I am having to do that manually in my app code.

    My own libraries I am not having any problems with, it was the
    differences in GEM paths between the OSes that was causing my problem.

    -- gw

    --
    Posted via http://www.ruby-forum.com/.
    Greg Willits, Oct 22, 2008
    #3
  4. On Wed, Oct 22, 2008 at 2:30 PM, Greg Willits <> wrote:
    > Martin Boese wrote:
    >> I suggest to use rubygems, even if you don't write libraries or plan to
    >> publish your program.

    >
    > I have considered gems (still unsure how to 'serve' them privately), but
    > since you brought it up, the scenario that prompted this message was
    > that it was precisely an installed gem that was causing my problems --
    > the mysql one.
    >
    > I installed it on a fresh server and discovered that it was not
    > automatically being found (but it was being found on my dev box). I
    > output $LOAD_PATH and AFAICT there were no paths that pointed to any GEM
    > folders, so I am having to do that manually in my app code.
    >

    Make sure you're doing "require 'rubygems'" at the top of your script
    in question.

    You could also check the environment variable RUBYOPT, you can use it
    to automatically require rubygems.

    RUBYOPT='rubygems'

    HTH,
    Michael Guterl
    Michael Guterl, Oct 22, 2008
    #4
  5. Greg Willits

    Greg Willits Guest

    Michael Guterl wrote:
    > On Wed, Oct 22, 2008 at 2:30 PM, Greg Willits <>
    > wrote:
    >> automatically being found (but it was being found on my dev box). I
    >> output $LOAD_PATH and AFAICT there were no paths that pointed to any GEM
    >> folders, so I am having to do that manually in my app code.
    >>

    > Make sure you're doing "require 'rubygems'" at the top of your script
    > in question.


    Aha! That puts some pieces together. Thanks.

    -- gw


    --
    Posted via http://www.ruby-forum.com/.
    Greg Willits, Oct 22, 2008
    #5
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    3
    Views:
    173
    Hal Fulton
    Aug 31, 2004
  2. Replies:
    0
    Views:
    89
  3. Stephen Tashiro

    A good system for $LOAD_PATH management?

    Stephen Tashiro, Mar 31, 2006, in forum: Ruby
    Replies:
    6
    Views:
    122
    Trans
    Apr 4, 2006
  4. Daniel Harple
    Replies:
    2
    Views:
    125
  5. veer
    Replies:
    0
    Views:
    84
Loading...

Share This Page