I'm :-1: on this because it fires a curl request off every time the cask is evaluated. This includes `brew cask list` `brew cask search` `brew cask info` etc. If you're off a network for those commands, you're gonna have a bad time.

What we'd need to support dynamic URLs would be *lazy URL definitions*. Something like this.

```ruby
class Foo < Cask
  url {
    # whatever ruby code you need to yield a proper URL
    "http://example.com/#{rand(1000)}"
  }
end

class Cask
  # optional string argument or block
  def self.url(url=nil, &block)
      @url = block || url
  end

  def url
    if @@url.is_a? Proc
      @url ||= @@url.call
    else
      @url ||= @@url
    end
  end
end
```

Obviously with less ugly cvar/ivar interaction. :wink: