{"id":44,"date":"2005-12-21T17:56:00","date_gmt":"2005-12-21T22:56:00","guid":{"rendered":"http:\/\/dilettantes.code4lib.org\/?p=44"},"modified":"2006-01-17T23:37:33","modified_gmt":"2006-01-18T04:37:33","slug":"rails-resolver-router-on-rails","status":"publish","type":"post","link":"https:\/\/rossfsinger.me\/blog\/2005\/12\/rails-resolver-router-on-rails\/","title":{"rendered":"Rails Resolver Router: on Rails!"},"content":{"rendered":"<p>Since my foray into python a couple of months ago, I&#8217;ve been enjoying branching out into new languages.<\/p>\n<p>I had pitched the concept of a link resolver router for the state universal catalog to a committee I sit on (this group talks about SFX links in the 856 tag and whatnot).  The problem with making links for a publicly available resource point to your institutional resolver is just that.  It&#8217;s pointing your your institutional resolver, despite the fact that your audience could be coming from anywhere.  This plays out even greater in a venue such as a universal catalog, since there&#8217;s not really a &#8220;home institution&#8221; to point a resolver link, anyway.  OCLC and UKOLN both have resolver routers, and OCLC&#8217;s certainly is an option, but I don&#8217;t feel comfortable with the possibility that all of our member institutions might have to pay for the service (in the future).  My other problem with OCLC&#8217;s service is that you can only belong to one institution and I have never liked that (especially as more and more institutions have link resolvers).<\/p>\n<p>So, in this committee I mentioned that it would be pretty simple to make a router, and since I was having trouble getting people to understand what exactly I was talking about, I decided to make a proof-of-concept.  And, since I was making a proof-of-concept, I thought it&#8217;d be fun to try it in Ruby on Rails.<\/p>\n<p>Now, a resolver router is about the simplest concept possible.  It doesn&#8217;t really do anything but take requests and pass them off to the appropriate resolver.  It&#8217;s a resolver abstraction layer, if you will.  I thought this was a nice, small project to try to cut my Ruby teeth on.  There&#8217;s a little bit a database, a little bit of AJAX.  It&#8217;s also useful, unlike making a cookbook from a tutorial or something.<\/p>\n<p>It took about three days to <a href=\"http:\/\/rosstest.gatech.edu\/route?url_ver=Z39.88-2004&#038;rft_val_fmt=info:ofi\/fmt:kev:mtx:journal&#038;rfr_id=info:sid\/citeulike.org\/citeulike&#038;rft_id=info:doi\/10.1128\/AAC.48.9.3349&#038;rft.epage=3357&#038;rft.title=Antimicrob.%20Agents%20Chemother.&#038;rft.auinit=V&#038;rft.aufirst=&#038;rft.aulast=Frecer&#038;rft.atitle=De%20Novo%20Design%20of%20Potent%20Antimicrobial%20Peptides&#038;date=2004-9-1&#038;rft.spage=3349&#038;rft.volume=48&#038;rft.issue=9&#038;rft.genre=article&#038;genre=article&#038;url_ctx_fmt=ori:fmt:kev:mtx:ctx\">make this<\/a>.    After you pick your resolver (Choose a couple!  Add your own!), you&#8217;ll be taken to a page to choose between your various communities for appropriate copy.<\/p>\n<p>I chose this particular citation because it shows the very huge limitation of link resolvers (if you choose Georgia Tech&#8217;s resolver and Emory&#8217;s resolver, for instance); despite the fact that this is freely available, it does not appear in my resolver.  That&#8217;s not really the use case I envision, though.  I am thinking more of a case like my co-worker, Heather, who should have access to Georgia Tech&#8217;s collection, Florida State&#8217;s resources (she&#8217;s in grad school there), Richland County Public Library (she lives in Columbia, SC), and the University of South Carolina (where her husband is a librarian).  The resolver router alleviates the need to search for a given citation in the various communities (indeed to even have to think of or know where to look within those communities).<\/p>\n<p>Sometime later this winter, I&#8217;ll have an even better use case.  I&#8217;ll keep that under wraps for now.<\/p>\n<p>Now, my impression of Ruby on Rails&#8230;  For a project like this, it is absolutely amazing.  I cannot believe I was able to learn the language from scratch and implement something that works (with this amount of functionality) in such a short amount of time.  By bypassing the need to create the &#8220;framework&#8221; for the application, you can just dive into implementation.<\/p>\n<p>In fact, I think my time to implementation would have been even faster if the number of resources\/tutorials out there didn&#8217;t suck out loud.  Most references point to <a href=\"http:\/\/www.onlamp.com\/pub\/a\/onlamp\/2005\/01\/20\/rails.html\">these<\/a> <a href=\"http:\/\/www.onlamp.com\/pub\/a\/onlamp\/2005\/03\/03\/rails.html\">tutorials<\/a> to get you started, but they really aren&#8217;t terribly helpful.  They explain nothing about why they are doing what they are doing in them.  <a href=\"http:\/\/www.slash7.com\/articles\/2005\/01\/24\/really-getting-started-in-rails\">I found this blog posting<\/a> to be infinitely more useful.  <a href=\"http:\/\/www.slash7.com\/\">Her blog in general<\/a> is going in my aggregator, I think.<\/p>\n<p>When it comes to learning Ruby, <a href=\"http:\/\/poignantguide.net\/ruby\/\">this is a masterful work of art<\/a>&#8230;  but&#8230;  not terribly useful if you just want to look things up.  <a href=\"http:\/\/whytheluckystiff.net\/ruby\/pickaxe\/\">I recommend this<\/a> for that.<\/p>\n<p>Anyway, I am so impressed with Ruby on Rails that I am planning on using it (currently) for &#8220;<a href=\"http:\/\/dilettantes.blogspot.com\/2005\/11\/envisioning-alto.html\">alternative opac project<\/a>&#8220;, which is now being code named &#8220;Communicat&#8221;.  More on this shortly (although I did actually develop the database schema today).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since my foray into python a couple of months ago, I&#8217;ve been enjoying branching out into new languages. I had pitched the concept of a link resolver router for the state universal catalog to a committee I sit on (this group talks about SFX links in the 856 tag and whatnot). The problem with making [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,7,9],"tags":[],"class_list":["post-44","post","type-post","status-publish","format-standard","hentry","category-coding","category-libraries","category-ruby-on-rails"],"_links":{"self":[{"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/posts\/44","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/comments?post=44"}],"version-history":[{"count":0,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/posts\/44\/revisions"}],"wp:attachment":[{"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/media?parent=44"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/categories?post=44"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/tags?post=44"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}