Não tenho 100% de certeza se essa é uma correspondência exata, mas acho que pelo menos chega perto o suficiente em um sentido geral para mostrar onde pode ser útil quebrar ou alterar as regras de escopo.
A linguagem Ruby vem da classe de modelo ERB, que por exemplo no Rails é usada para gerar arquivos html. Se você usar, fica assim:
require 'erb'
x = 42
template = ERB.new <<-EOF
The value of x is: <%= x %>
EOF
puts template.result(binding)
Os binding
ponteiros acessam variáveis locais à chamada do método ERB, para que possa acessá-las e usá-las para preencher o modelo. (O código entre os EOFs é uma string, a parte entre <% =%> avaliada como código Ruby pelo ERB e declararia seu próprio escopo como uma função)
Um exemplo do Rails ainda melhor demonstra isso. Em um controlador de artigo, você encontraria algo assim:
def index
@articles = Article.all
respond_to do |format|
format.html
format.xml { render :xml => @posts }
end
end
O arquivo index.html.erb poderia então usar a variável local @articles
assim (neste caso, a criação de um objeto ERB e a ligação são tratadas pela estrutura do Rails, para que você não a veja aqui):
<ul>
<% @articles.each do |article| %>
<li><%= article.name</li>
<% end %>
</ul>
Portanto, pelo uso de uma variável de ligação, Ruby permite executar um e o mesmo código de modelo em contextos diferentes.
A classe ERB é apenas um exemplo de uso. O Ruby permite, em geral, obter o estado real de execução com ligações de variáveis e métodos, usando a ligação Kernel #, que é muito útil em qualquer contexto em que você deseja avaliar um método em outro contexto ou deseja manter um contexto para uso posterior.