Carl and I have been working on the plugins system over the past few days. As part of that process, we read through the Rails Plugin Guide. While reading through the guide, we noticed a number of idioms presented in the guide that are serious overkill for the task at hand. I don't blame the author of the guide; the idioms presented are roughly the same that have been used since the early days of R
There's been a lot of discussion recently about the Facebook patent clause ("PATENTS" in Facebook repositories). While most of the objections to the license have focused on the patent revocation provisions, most of the defense focuses on the patent grant. This has meant that both sides are talking past each other, and casual readers are getting confused about what this is all about. The Facebook p
Great web applications boot up fast and stay silky smooth once they've started. In other contexts, applications can choose quick loading or responsiveness once they've loaded. Great games can get away with a long loading bar as long as they react instantly once the gamer gets going. In contrast, scripting languages like Ruby, Python or Bash optimize for instant boot, but run their programs more sl
This post is the fourth in a series on building an Ember application HTML-first. In this series, we're going to build the EmberConf schedule application from the ground up. Let's GoComponentsPulling Out DataAirtable Time ← This postCleaning Things UpAdding More PagesPolishing: Server-Side Rendering, Prerendering and Code SplittingIn the last post, we… This post is the third in a series on building
(This post is about Yarn, a new JS package manager that was announced today.) I work with Node and npm packages almost every day, on Tilde's main app, Skylight, or on one of Ember's many packages. Many have remarked upon how fast the npm registry has grown, and it's hard to imagine working on any of my packages without the npm ecosystem. I've also worked on a couple of application-level package ma
I had occasion to think about Rack a few times today. First of all, I was writing some proposals to a few conferences about Rails, which always gets me thinking about architecture. In this case, it got me thinking about how Rack is influencing Rails' architecture moving forward. Second, a friend told me he was considering moving from an archaic web language to Python (specifically Django). I got t
For a number of years, I've been about as active in client-side development (through jQuery) as I have been active in server-side development (through Merb and then Rails). Recently, I've released a couple of libraries (jQuery Offline and Rack::Offline), designed to make it easier to build applications that can withstand both flaky connections and a complete lack of connectivity. Of course, those
I officially joined Engine Yard on January 1, 2008, about a week before we announced our Series A funding, becoming its twenty-second employee. I was Engine Yard's very first "Engineering" hire, and I would spend the next year working on Ezra's Merb project, finally releasing Merb 1.0 at MerbCamp that October. When I joined Engine Yard, I had already been working on the jQuery project for a couple
For a while now, the Ruby community has become enamored in the latest new hotness, evented programming and Node.js. It's gone so far that I've heard a number of prominent Rubyists saying that JavaScript and Node.js are the only sane way to handle a number of concurrent users. I should start by saying that I personally love writing evented JavaScript in the browser, and have been giving talks (for
First Shugo announced them at RubyKaigi. Then Matz showed some improved syntax at RubyConf. But what are refinements all about, and what would they be used for? The first thing you need to understand is that the purpose of refinements in Ruby 2.0 is to make monkey-patching safer. Specifically, the goal is to make it possible to extend core classes, but to limit the effect of those extensions to a
One thing we hear a lot by people who start to use bundler is that the workflow is more complicated than it used to be when they first start. Here's one (anonymized) example: "Trying out Bundler to package my gems. Still of the opinion its over-complicating a relatively simple concept, I just want to install gems." Bundler has a lot of advanced features, and it's definitely possible to model fairl
Taking into consideration the huge amount of feedback we received during the Bundler 0.9 series, we streamlined Bundler 1.0 significantly, and made it fit user expectations better. Whether you have used bundler before or not, the easiest way to get up to speed is to read the following notes and go to http://gembundler.com/v1.0 for more in-depth information. (note that gembundler.com is still being
TL;DR Although apps and gems look like they share the concept of "dependency", there are some important differences between them. Gems depend on a name and version range, and intentionally don't care about where exactly the dependencies come from. Apps have more controlled deployments, and need a guarantee that the exact same code is used on all machines (dev, ci and production). When developing a
I wrote somewhat extensively about the problem of encodings in Ruby 1.9 in general last week. For those who didn't read that post, let me start with a quick refresher. What's an Encoding? An encoding specifies how to take a list of characters (such as "hello") and persist them onto disk as a sequence of bytes. You're probably familiar with the ASCII encoding, which specifies how to store English c
UPDATE: The DataObjects drivers, which are used in DataMapper, are now updated to honor default_internal. Let's keep this moving. Since Ruby 1.9 announced support for encodings, there has been a flurry of activity to make existing libraries encoding aware, and a tornado of confusion as users of Ruby and Rails have tried to make sense of it. In this post, I will lay out the most common problems peo
Since version 0.9, Bundler has had a feature called "groups". The purpose of this feature is to allow you to specify groups of dependencies which may be used in certain situations, but not in others. For instance, you may use ActiveMerchant only in production. In this case, you could say: group :production do gem "activemerchant" end Specifying groups allows you to do two things. First, you can in
Rails 2.3 has a ton of really nice functionality locked up in monolithic components. I've posted quite a bit about how we've opened up a lot of that functionality in ActionPack, making it easier to reuse the router, dispatcher, and individual parts of ActionController. ActiveModel is another way we've exposed useful functionality to you in Rails 3. Before I Begin, The ActiveModel API Before I begi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く