From: "Shot (Piotr Szotkowski)" Date: 2010-01-31T18:42:51+09:00 Subject: Re: "require 'rubygems'" In Your Library/App/Tests Is Wrong? --y0ulUmNC+osPPQO6 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Josh Cheek: > On Sat, Jan 30, 2010 at 2:32 PM, Shot > (Piotr Szotkowski) wrote: >> Josh Cheek: >>> I wonder how many people _don't_ use rubygems. What creates more >>> work, requiring rubygems so that people who don't want it don't have >>> to use it, or not requiring rubygems so that people who do want it >>> have to keep putting -rubygems when they load files? >> Ruby 1.9 has RubyGems built-in, and for the legacy version you can >> simply add -rubygems to your RUBY_OPTS and be done with the problem. > I don't have 1.9, but this sounds like it requires rubygems > automatically, which seems to contradict what several people > earlier have said we should do. I think what most of us (can=E2=80=99t really say for others, though) want = to say is this: if you=E2=80=99re creating a library, don=E2=80=99t =E2=80=98r= equire 'rubygems'=E2=80=99 if all you use them for is to make =E2=80=98require 'some-other-lib'=E2=80= =99 work automagically. This is because there are cases where people want to manage their libraries outside RubyGems, and by requiring them you add a dependency that is simply not needed in their case. If your lib is to be used by third party applications, their authors will take care of satisfying your lib=E2=80=99s dependencies; if you want to provide an executable wrapper that utilises your library, make the wrapper=E2=80=99s code intelligent enough to look for the dependencies (e.g. by doing the LoadError tango before it says that its dependencies cannot be satisfied). > For example, the original post quotes "The system I use to > manage my $LOAD_PATH is not your library/app/tests concern." Yes, and this is what I mean above. > If I understand what you have said, it sounds like the > language has done what they are saying that we should not do. Ruby 1.9 did what is convenient, and (I=E2=80=99m guessing here) to promote wider RubyGems adoption, but I still believe you shouldn=E2=80=99t assume RubyGems presence (especially if you want to be nice to stripped-down embedded systems, for example). What I meant by the =E2=80=981.9 does this for you anyway, and in 1.8 you c= an adjust RUBY_OPTS once and be done with it=E2=80=99 comment was to provide t= he solution to the problem of =E2=80=98it=E2=80=99s inconvenient for me to use= libraries that do not =E2=80=9Crequire 'rubygems'=E2=80=9D, because I need to explici= tely require them myself=E2=80=99. That said, I do agree with James Britt that putting a= ny -r switches in RUBY_OPTS feels bad to me (but then I don=E2=80=99t mind requir= ing RubyGems myself where needed =E2=80=93 *and* I try hard to use Ruby 1.9 any= way). =E2=80=94 Shot --=20 I should like to find the person who decided that since =E2=80=98bookmarks=E2=80=99 and =E2=80=98history=E2=80=99 were both lists o= f URLs they ought to be integrated in a single database. I should like to shake him warmly by the throat until his head comes off. [Roger Burton West on Firefox, hates-software] --y0ulUmNC+osPPQO6 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAktlUJcACgkQi/mCfdEo8UrSQwCbBLdWZrkgDBFFDV6wv6hv/xWK jhMAoJ0mkGEDQ3/LDIAPfn4da3MdJEtl =6hTa -----END PGP SIGNATURE----- --y0ulUmNC+osPPQO6--