Dois Pontos :: em Ruby - O que são? [iniciante]

Pessoal, dúvida básica:

Estudando Ruby on Rails me deparei com o seguinte código:

class CreateContexts < ActiveRecord::Migration
  def self.up
    create_table :contexts do
        |t|t.column :name, :string
      end
  end
  def self.down
    drop_table :contexts
  end
end

sei que o “<” representa a herança da classe ActiveRecord, mas e os dois pontos do Migration? O que representam?

Obrigado

Um símbolo (Symbol) se parece com um nome de variável mas é prefixado com dois pontos (:). Exemplos: :action, :line_items. Você não precisa pré-declarar um símbolo e garante-se que eles sejam únicos. A linguagem também garante que não importa onde apareça em seu programa, um símbolo particular terá sempre o mesmo valor.
Ou seja é apenas algo que a linguagem Ruby disponibiliza e que é bastante comum de se ver nos projetos RoR.

1 curtida

No caso os dois pontos juntos (quatro pontos) representa um Symbol também?

Valeu pela resposta @Leonardo_Brito

Renan, esse é o constant lookup, ou seja é utilizado para buscar por constantes.

Em ruby nomes de classes devem ser constantes(iniciar com letra maiúscula).

No seu exemplo esse token foi usado para buscar pela constante Migration dentro do módulo ActiveRecord.

module ActiveRecord
  class Migration
  end
end

Caso você defina uma constante em uma classe ou em um módulo o acesso externo deve ser da mesma forma:

class CustomClass
  MY_CONSTANT = 'xxx'
end

CustomClass::MY_CONSTANT

Na documentação você também pode encontrar esse token sendo utilizado para sinalizar que um trata-se de um método de classe ou uma constante.
Ex.: Documentação da classe Array
::[]
::new
#push

1 curtida

Agora entendi @alessandro.asac, muito obrigado pela resposta!

Code safe,

Abraço

Serve para acessar uma constante que está dentro de uma classe;
Exemplo: Tenho uma constante chamada OLA dentro da classe Teste e acesso ela com ::

class Teste
OLA = "oi"
end
puts Teste::OLA