From: Chris Carter Date: 2007-02-25T01:03:42+09:00 Subject: Re: maven for ruby? On 2/24/07, Stephen Duncan wrote: > On 2/24/07, Austin Ziegler wrote: > > On 2/24/07, Stephen Duncan wrote: > > > > I may have a wrong impression of Maven, but if I do, it's not my fault: > > > > * I don't use Java, so I don't need Maven. > > * The OP's description of Maven was so overblown and useless as a > > description that I went to the Maven website. > > * The Maven website is nothing but marketing-speak on the "about > > Maven" pages. I expect to find useful information somewhere for a > > project that isn't excessively large to deal with. > > > > Nothing on the Maven website suggested that it isn't trying to solve > > problems that simple Don't Exist in the Ruby world, and that trying to > > take a Maven approach to Ruby problems is AT BEST misguided. > > That may well be true. Which is why I won't be trying to take any > action to make anything Maven-like for Ruby until I have more > experience & work on enough things / a large enough project to feel > the pain points and decide that I, in fact, think the Maven approach > needs to be brought to Ruby. Yea, because of teh way ruby does "packages" and since it has the gems system, a lot of the Maven stuff is not needed, or already there, ut pulling it all together would rock. > > > I also think that the OP is approaching his project the wrong way up > > front. How large is too large? Instead, ask what the minimum > > functionality can be logically delivered in each piece. Don't look at > > dividing an application in to twenty parts: look at making reusable > > functionality as libraries. > > > > These aren't things that software can help you do; you have to do them > > yourself. You can then have software help you manage those libraries, > > but a good source control system can deal with them. > > > > > There are some Maven functionalities that I'd like to see for Ruby (or > > > maybe I just don't yet know how to do them). I'd like an easy > > > mechanism to have RubyGems store gems in a per-user location instead > > > of globally be default (I'm sure this is possible, but I just haven't > > > taken the time to do it yet). > > > > I wouldn't ever want this by default. However, "gem help install" > > points out the --install option where you can specify a gem > > repository. What I don't know is how you would tell RubyGems about > > this repository in your includes, or if RubyGems supports a per-user > > repository to be read before the system repository. These would be > > good questions to raise on the rubygems-devel list or, better yet, to > > investigate in the source and provide patches to make it happen if you > > really need it. > > > > I don't, and I can't see any reason to run the software that way. > > Thanks for the info. On whether it's a good idea, we'll just have to > disagree; I really think that system-wide shouldn't be the default. I > do pledge that if I end up working enough with Ruby to justify the > time, I will work on solutions, and not whine about it on the mailing > list. :) > There is a way to set it up so taht gems are installed in your home directory, and I think Austin may have been confused because teh term repository means a lot of things in rubygems, but if you want to INSTALL them to your home directory, or somewhere in it, I believe you just set the environment variable: GEM_HOME. > > > Then, I want a simple way to list the > > > gems my project depends on and run a Rake task to install those > > > dependencies. > > > > That's actually very simple for you to add to your own Rakefile. If it > > works well enough, you can suggest it as a standard rake task or offer > > it to Ryan for hoe. > > Good to know. > > > > The purpose here is to do the equivalent of what > > > running mvn eclipse:eclipse does for a Java project: allow me to check > > > a project out, run a single command, and then be ready to start > > > developing. I don't know what the typical approach here for Ruby is. > > > > That really depends on the project. Unless things started showing up > > in hoe to enable what you're talking about, I doubt that any of my > > projects would be set up to work this way, for the most part. (That > > is, if you wanted to contribute to PDF::Writer, you would have to make > > sure you have Transaction::Simple and color-tools[1] installed > > yourself. I'm making changes to the PDF::Writer source, though, to > > make it easier to run the demos from the checkout tree without getting > > your already-installed version.) > > > > Of course, I suspect that most people who would start hacking on a > > project would have used the project first, so they would start by > > installing a project's gem -- and get its dependencies automatically. > > I'm mostly thinking about working on unreleased projects where this > wouldn't apply. > > > > I'd also like to have Hoe work equally well if I'm using Rspec vs. > > > test/unit. On the documentation front, I'm pretty certain there are > > > features of the Maven site tools that I'll miss in Ruby, but I haven't > > > put in the work yet to learn how it's done in the Ruby world to say > > > for sure. > > > > I don't use rspec and I doubt that I ever will (I can't see any point > > to it; on the projects where testing can make any meaningful > > difference, I already use TDD to a T). I've seen nothing that suggests > > that hoe won't run well with rspec, though. Documentation-wise, I > > doubt it. Documentation in Ruby is achieved primarily through rdoc. > > > > If you want project tracking, use Trac or possibly one of the > > up-and-coming Rails replacements for Trac. > > For site stuff here's what Maven does that I'm referring to. It > allows you to use plugins to generate a variety of different > documentation with little work: list of dependencies (including > transitive ones), JavaDoc (Rdoc equiv), Source cross-referenced with > JavaDoc (which I guess Rdoc does by itself), project info (how to > connect to SVN, etc.), code coverage, static analysis, and the ability > to write your own documentation in a couple different formats: APT > (wiki-like), xdoc (xml/html type), FML (for faqs), etc. For example: > http://www.stephenduncanjr.com/projects/easymock-propertyutils/index.html > > As far as I know, the only thing I'd want in Ruby is the ability to > integrate my Rdoc with an Rcov report or something. Like I said, I > don't know if there's anything important here. > I have actually been thinking of adding some stuff like this to RDoc/Rake, to easily build install docs, FAQs, maybe Rcov, that kind of stuff, so we can actually get content on all those default template rubyforge sites. > > And, if I'm undersanding you correctly (and I think I am based on the > > marketing speak on the Maven website), it seems that Maven is a > > combination of a command-line tool to help you managed projects where > > you *use* the projects and a website to help you manage stuff similar > > to Trac. This is overengineered to me. It's trying to do entirely too > > much. > > > > It's a very Java approach to a problem that should be much simpler, > > but because Java isn't simple, nothing that comes out of Java is > > simple. > > > > > I do think that with Ruby there can be a better/cleaner version of > > > Maven, but I still feel that Ruby does need a Maven. :) > > > > Then build one. If people agree, they'll use it too. > > > > -austin > > [1] Soon to be color. > > -- > > Austin Ziegler * halostatue@gmail.com * http://www.halostatue.ca/ > > * austin@halostatue.ca * http://www.halostatue.ca/feed/ > > * austin@zieglers.ca > > > > > > > -- > Stephen Duncan Jr > www.stephenduncanjr.com > > -- Chris Carter concentrationstudios.com brynmawrcs.com