[#388484] ruby-doc.org has been updated — James Britt <james.britt@...>

Ruby-doc.org has been updated.

22 messages 2011/10/03

[#388492] Operator Overloading — Thescholar Thescholar <thescholar@...>

Let's suppose I have a class like this one and then I create two

28 messages 2011/10/04
[#388515] Re: Operator Overloading — "Darryl L. Pierce" <mcpierce@...> 2011/10/04

On 10/04/2011 01:11 AM, Thescholar Thescholar wrote:

[#388518] Re: Operator Overloading — Brian Candler <b.candler@...> 2011/10/04

Darryl Pierce wrote in post #1024950:

[#388519] Re: Operator Overloading — "Darryl L. Pierce" <mcpierce@...> 2011/10/04

On 10/04/2011 10:03 AM, Brian Candler wrote:

[#388520] Re: Operator Overloading — Adam Prescott <adam@...> 2011/10/04

On Tue, Oct 4, 2011 at 3:53 PM, Darryl L. Pierce <mcpierce@gmail.com> wrote:

[#388523] Local vs method vs instance (was: Operator Overloading) — "Darryl L. Pierce" <mcpierce@...> 2011/10/04

On 10/04/2011 11:11 AM, Adam Prescott wrote:

[#388526] Re: Local vs method vs instance (was: Operator Overloading) — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2011/10/04

On Tue, Oct 4, 2011 at 5:31 PM, Darryl L. Pierce <mcpierce@gmail.com> wrote=

[#388558] question about method — "Joseph S." <musician_joe777@...>

AC = 14

12 messages 2011/10/04

[#388595] Read thru Csv file and store it in variables — ideal one <idealone5@...>

HI All,

9 messages 2011/10/05

[#388601] How to output an instance's type — Viaduct Productions <lists@...>

Hiya folks.

21 messages 2011/10/05
[#388603] Re: How to output an instance's type — Kassym Dorsel <k.dorsel@...> 2011/10/05

By type you want the variables class ?

[#388610] Re: How to output an instance's type — Viaduct Productions <lists@...> 2011/10/05

Hi Kassym. Thanks for the post.

[#388612] Re: How to output an instance's type — Kassym Dorsel <k.dorsel@...> 2011/10/05

Viaduct Productions wrote in post #1025201:

[#388636] Re: How to output an instance's type — luke gruber <luke.gru@...> 2011/10/06

>How do I output the type of a variable?

[#388644] Re: How to output an instance's type — Viaduct Productions <lists@...> 2011/10/06

Hi Luke. Thanks for the reply.=20

[#388650] Cheapest way to host low-traffic small-footprint Rails app? — Intransition <transfire@...>

I have a commercial Radiant-based website that I manage for a small-

18 messages 2011/10/06
[#388653] Re: Cheapest way to host low-traffic small-footprint Rails app? — Phillip Gawlowski <cmdjackryan@...> 2011/10/06

On Thu, Oct 6, 2011 at 2:47 PM, Intransition <transfire@gmail.com> wrote:

[#388660] Re: Cheapest way to host low-traffic small-footprint Rails app? — Dan Nachbar <dan@...> 2011/10/06

On Oct 6, 2011, at 8:53 AM, Phillip Gawlowski wrote:

[#388662] Re: Cheapest way to host low-traffic small-footprint Rails app? — Viaduct Productions <lists@...> 2011/10/06

What do people consider "cheap"? You want scalability? Support? =20

[#388728] How to make Saas application? Is it possible? — Асет Орымбаев <asetpochta@...>

SGkgZXZlcnlib2R5IQoKSSB3YW50IHRvIGtub3csIGlzIGl0IHBvc3NpYmxlIHRvIGNyZWF0ZSBT

8 messages 2011/10/07

[#388812] require -- looking in rubygems, now "." — "charles a." <charles.agriesti@...>

irb

11 messages 2011/10/09

[#388855] why does `a + f b` not parse? — Martin DeMello <martindemello@...>

ruby-1.9.2-p0 > 2 + sqrt 5

18 messages 2011/10/11
[#388857] Re: why does `a + f b` not parse? — Wayne Brissette <waynefb@...> 2011/10/11

[#388858] Re: why does `a + f b` not parse? — Dave Aronson <rubytalk2dave@...> 2011/10/11

On Tue, Oct 11, 2011 at 06:32, Wayne Brissette <waynefb@earthlink.net> wrote:

[#388861] Re: why does `a + f b` not parse? — Phillip Gawlowski <cmdjackryan@...> 2011/10/11

On Tue, Oct 11, 2011 at 1:02 PM, Dave Aronson

[#388862] Re: why does `a + f b` not parse? — jake kaiden <jakekaiden@...> 2011/10/11

Phillip Gawlowski wrote in post #1026042:

[#388864] Re: why does `a + f b` not parse? — Bartosz Dziewoński <matma.rex@...> 2011/10/11

Yes, I think we all know that; the question is, why does 2 + sqrt(5)

[#388881] gem directory not find — Sam Porwal <pawan.porwal@...>

Hi All,

11 messages 2011/10/11

[#388945] What’s the best way of checking if an argument has been given or not? — Nikolai Weibull <now@...>

Hi!

19 messages 2011/10/14
[#388950] Re: What’s the best way of checking if an argument has been given or not? — jake kaiden <jakekaiden@...> 2011/10/14

...probably not the *best* way, but this works:

[#388952] Re: What’s the best way of checking if an argument has been given or not? — Bartosz Dziewoński <matma.rex@...> 2011/10/14

You can use this syntax, too. "args" becomes an array of all arguments given.

[#388954] Re: What’s the best way of checking if an argument has been given or not? — Nikolai Weibull <now@...> 2011/10/14

On Fri, Oct 14, 2011 at 15:29, Bartosz Dziewo=C5=84ski <matma.rex@gmail.com=

[#388958] Re: What’s the best way of checking if an argument has been given or not? — Chris Hulan <chris.hulan@...> 2011/10/14

You could do it as a wrapper:

[#388961] Re: What’s the best way of checking if an argument has been given or not? — Nikolai Weibull <now@...> 2011/10/14

On Fri, Oct 14, 2011 at 15:51, Chris Hulan <chris.hulan@gmail.com> wrote:

[#388962] Re: What’s the best way of checking if an argument has been given or not? — Chris Hulan <chris.hulan@...> 2011/10/14

You said you didn't want to manually do it, this lets the interpreter

[#388970] Re: What’s the best way of checking if an argument has been given or not? — luke gruber <luke.gru@...> 2011/10/14

Hmm, if you really don't want to use the splat *args, you could create a

[#388972] Re: What’s the best way of checking if an argument has been given or not? — Jens Wille <jens.wille@...> 2011/10/14

luke gruber [2011-10-14 17:15]:

[#388947] Beginning — "Junayeed Ahnaf Nirjhor" <zombiegenerator@...>

Hello,

19 messages 2011/10/14

[#389025] writing a poem backwards or in reverse order — Teresa Nguyen <s-unguyen2@...>

i would like to write a poem using nano and through ruby I would like to

18 messages 2011/10/16
[#389036] Re: writing a poem backwards or in reverse order — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2011/10/16

On Sun, Oct 16, 2011 at 2:04 AM, Teresa Nguyen

[#389026] 'gem install' help please — Kaye Ng <sbstn26@...>

Hi.

18 messages 2011/10/16

[#389037] Ruby and threading — Carter Cheng <cartercheng@...>

Hello,

32 messages 2011/10/16
[#389038] Re: Ruby and threading — Josh Cheek <josh.cheek@...> 2011/10/16

On Sun, Oct 16, 2011 at 3:50 AM, Carter Cheng <cartercheng@gmail.com> wrote:

[#389195] Re: Ruby and threading — Josh Cheek <josh.cheek@...> 2011/10/19

On Sun, Oct 16, 2011 at 4:03 AM, Josh Cheek <josh.cheek@gmail.com> wrote:

[#389340] security thesis advice — Jorge Bo <jorgebo10@...>

Hi,

19 messages 2011/10/22

[#389465] Modify only a .rb file, but not other .rb files, while still extending core classes? — Marc Heiler <shevegen@...>

Given is a small .rb file.

8 messages 2011/10/26

[#389553] "A" and "an" articles in front of words — Faith Tarcha <faith@...>

Hello guys, I have two objects that consist of arrays and I am suppose

29 messages 2011/10/29
[#389587] Re: "A" and "an" articles in front of words — jake kaiden <jakekaiden@...> 2011/10/31

hi Faith,

[#389598] Re: "A" and "an" articles in front of words — Dave Aronson <rubytalk2dave@...> 2011/10/31

On Sun, Oct 30, 2011 at 22:23, jake kaiden <jakekaiden@yahoo.com> wrote:

[#389789] Re: "A" and "an" articles in front of words — steve ross <cwdinfo@...> 2011/11/06

Sorry to be late to the party on this one, but a regex seems a bit of a =

[#389791] Re: "A" and "an" articles in front of words — Hassan Schroeder <hassan.schroeder@...> 2011/11/06

On Sun, Nov 6, 2011 at 12:59 PM, steve ross <cwdinfo@gmail.com> wrote:

[#389795] Re: "A" and "an" articles in front of words — Peter Camilleri <pdc.cse@...> 2011/11/06

Indeed. My understanding is that the usage of a/an depends on the

[#389859] Re: "A" and "an" articles in front of words — Gonçalo C. Justino <goncalo.justino@...> 2011/11/08

> Indeed. My understanding is that the usage of a/an depends on the

[#389590] Vim Ruby Config — "Junayeed Ahnaf Nirjhor" <zombiegenerator@...>

Hello,

13 messages 2011/10/31

[ANN] Http 0.0.1 - talk to the web humanely

From: Tony Arcieri <tony.arcieri@...>
Date: 2011-10-11 04:47:52 UTC
List: ruby-talk #388850
Http is on Github: https://github.com/tarcieri/http

Version 0.0.1 (codename "half-baked 0.0.1 release") is now available
as a gem: gem install http

--

Some of you may have seen the Python "Requests" library on Hacker News
yesterday (which racked up nearly 300 points):
http://news.ycombinator.com/item?id=3D3094695

There have been various attempts to make such a library in Ruby,
perhaps most notably "httparty". I busted out httparty at a job
interview and amazed my interviewer when it just seemed to do
everything automatically.
Http aims to provide the simplest, easiest to use experience for an
HTTP library ever.

--

How do you use it? Like this:

=A0 =A0 body =3D Http.get "https://github.com/tarcieri/http"
=A0 =A0 body.is_a? String =3D> true

DONE. No making URI objects. No setting use_ssl even though you passed
in a URI::HTTPS object. It Just Works.

You may have noticed I've been stylizing the project "Http" and
perhaps you find that annoying. Maybe you just want to write HTTP.
Fine! That works too.

--

How is this any different from httparty? Good question!

Http employs the notion of chaining (ala jQuery) to construct complex
requests. For example, if we were to do:

=A0 =A0 Http.get "https://github.com/tarcieri/http/commit/HEAD"

we would get back an HTML page. What if we want a JSON response?
Github lets you tack ".json" onto the end of the URL to get the JSON
representation from a browser, but what HTTP would really prefer we do
is employ content negotiation by using the Accept header. We can add
an Accept header with the following:

=A0 =A0 Http.with_headers(:accept =3D>
"application/json").get("https://github.com/tarcieri/http/commit/HEAD")

This can be shortened to the following:
=A0 =A0 Http.with(:accept =3D>
"application/json").get("https://github.com/tarcieri/http/commit/HEAD")

#with is an alias for #with_headers. Http also provides a first class
way to specify the Accept header:

=A0 =A0 Http.accept(:json).get("https://github.com/tarcieri/http/commit/HEA=
D")

Best of all, if you have a JSON library loaded which defines
JSON.parse and the server sends you back a response with Content-Type:
application/json, Http will automatically parse the response for you:

=A0 =A0 >> Http.accept(:json).get("https://github.com/tarcieri/http/commit/=
HEAD")
=A0 =A0 =A0=3D> {"commit"=3D>{"added"=3D>["CHANGES.md"],
"parents"=3D>[{"id"=3D>"ef4764d0a2daae6081be3afe14d7efee0f1b5f91"}],
"author"=3D>{"name"=3D>"Tony Arcieri", "login"=3D>"tarcieri",
"email"=3D>"tony.arcieri@gmail.com"},
"url"=3D>"/tarcieri/http/commit/17d8c9a4206952f0d5f59fb661cbdfe18afb6c61",
"id"=3D>"17d8c9a4206952f0d5f59fb661cbdfe18afb6c61",
"committed_date"=3D>"2011-10-10T20:49:47-07:00",
"authored_date"=3D>"2011-10-10T20:49:47-07:00", "message"=3D>"Initial
changelog", "tree"=3D>"a6fe5111cb33d6ac66c7055c3c348bb7aa7b08fc",
"committer"=3D>{"name"=3D>"Tony Arcieri", "login"=3D>"tarcieri",
"email"=3D>"tony.arcieri@gmail.com"}}}

--

Is chaining really the only difference from httparty? For now, yes,
but coming soon, it will include a Ragel parsers by Carl Lerche from
his Picard project.
Included will be HTTP request and response parsers, as well as a MIME
multipart parser generated from a Ragel state machine description.
Hooray, no more cgi_multipart_eof_fix! (although I suppose that's an
already dated reference)

--

Miscellaneous Q&A:

Q: Is this just a client library or will it support servers?
A: I would like to support minimalistic server capabilities (think the
TCPServer concept applied to HTTP). There's nothing for that right now
though, sorry

Q: Will it support streaming?
A: You damn well better believe it will support streaming. Even
Net::HTTP supported streaming.

Q: How do I get the response headers?
A: Right now you can't because there aren't any response objects.
There will be! Http.get accepts an options hash, and the default
option is :response =3D> :parsed_body. Changing :response =3D> :object
will give you a response object. This will be the default behavior for
HttpClient.get as well (Http provides a separate HttpClient clas for
when you want OOP instead of KISS)

Q: I don't want you automatically parsing JSON! How do I get the
string response back?
A: The default Http.get :response setting is ":parsed_body". The
following request will give you back the response as a string:

=A0 >> Http.accept(:json).get("https://github.com/tarcieri/http/commit/HEAD=
",
:response =3D> :body)
=A0 =A0=3D> "{\"commit\":{\"added\":[\"CHANGES.md\"],\"parents\":[{\"id\":\=
"ef4764d0a2daae6081be3afe14d7efee0f1b5f91\"}],\"author\":{\"name\":\"Tony
Arcieri\",\"login\":\"tarcieri\",\"email\":\"tony.arcieri@gmail.com\"},\"ur=
l\":\"/tarcieri/http/commit/17d8c9a4206952f0d5f59fb661cbdfe18afb6c61\",\"id=
\":\"17d8c9a4206952f0d5f59fb661cbdfe18afb6c61\",\"committed_date\":\"2011-1=
0-10T20:49:47-07:00\",\"authored_date\":\"2011-10-10T20:49:47-07:00\",\"mes=
sage\":\"Initial
changelog\",\"tree\":\"a6fe5111cb33d6ac66c7055c3c348bb7aa7b08fc\",\"committ=
er\":{\"name\":\"Tony
Arcieri\",\"login\":\"tarcieri\",\"email\":\"tony.arcieri@gmail.com\"}}}"

Q: Why didn't you use Zed's parser from Mongrel(2)?
A: I'm launching this first as a client library, so Mongrel is the
wrong place to look for a response parser. Zed did write a HTTP
response parser as part of RFuzz, and really response parsers are
nearly the same thing as request parsers. I know Carl a bit better
than Zed at this point though, so I decided to base my work off of
his.

Q: Will it support Websockets?
A: I'm going to bypass the whole philosophical debate about whether
HTTP and Websockets belong together and just say: SURE! Soon...

Q: Will it work with EventMachine?
A: The vaporware parser APIs will be great for people building evented
web stuff using EventMachine, but unfortunately no, Http does not
natively support EventMachine.

Q: Can I make multiple concurrent requests without EventMachine?
A: Sure, I'd love to throw in support for concurrent HTTP requests
using a thread pool. Despite what=A0Raffi Krikorian says about Ruby, it
*can* do scatter/gather programming, and quite well!

Q: Y U NO work on Celluloid?
A: I'll probably switch back to working on Celluloid soon, but in the
meantime Http is a step towards a larger goal: hooking Celluloid to
the web. I'll be using Http as the basis of a web server which
dispatches incoming requests (and Websockets) to Celluloid::Actors.

--
Tony Arcieri

In This Thread

Prev Next