Estou usando Ruby on Rails 3 e gostaria de mover algum código personalizado e compartilhado em um módulo.
- Qual sintaxe devo usar para escrever o código do módulo?
- Em qual pasta do meu aplicativo devo colocar o arquivo do módulo?
- Como devo incluir esse módulo em uma ou mais classes de controlador?
- Que outra ação, se houver, devo usar o módulo personalizado em qualquer lugar do meu aplicativo?
- Como posso chamar métodos no módulo de meu aplicativo?
Desde já, obrigado.
ruby-on-rails-3
module
user502052
fonte
fonte
Respostas:
Para 1. Um módulo é criado / aberto simplesmente dizendo:
Para 2. A
lib
pasta. Se você deseja organizar seus módulos nalib
pasta, pode colocá-los nos próprios módulos. Por exemplo, se você quiser uma subpasta,super_modules
seus módulos serão definidos da seguinte forma:Para 3./5. Ao incluir o módulo em uma classe, você pode simplesmente chamar os métodos dos módulos como se fossem definidos na classe:
Para 4. Primeiro, certifique-se de que seu módulo seja realmente necessário em todas as classes de seu aplicativo. Caso contrário, faz sentido incluí-lo apenas onde for necessário para não sobrecarregar as classes que não precisam dele de qualquer maneira. Se você realmente deseja o módulo em todos os lugares, inclua uma olhada na hierarquia de classes de suas classes no aplicativo. Você quer o módulo em todos os modelos? Você pode abrir ActiveRecord :: Base e adicionar seu módulo lá.
fonte
lib
pasta, uma nota importante é permitir que Rails3 descomente a linhaconfig\application.rb
paraconfig.autoload_paths
- leia, por exemplo, stackoverflow.com/questions/1073076/rails-lib-modules-and ... Nota também que você deve ter cuidado ao usar um nome de arquivo para o seu módulo que corresponda ao próprio nome do módulo. Portanto, se você salvá-lolib/test/my_module.rb
, terá queinclude Test::MyModule
- para obter mais detalhes, consulte stackoverflow.com/questions/4073856/rails-3-autoloadapp/models
que o código precisa de acesso a outros modelos. Se o código é verdadeiramente uma 'biblioteca' e pode existir por si só, I sugira vender uma gema. Para exemplos, consulte github.com/shageman/the_next_big_thingA> 1. Você pode usar a mesma sintaxe de qualquer outra classe ruby. Por exemplo, estou definindo um módulo VehicleClassifer que vai usar o método classify_vehicle para classificar um veículo com base no número de rodas que ele recebe como entrada.
A> 2. Os módulos geralmente são armazenados na pasta / lib.
as questões 3,4,5 têm mais ou menos a mesma resposta. você pode usar
na aula você está usando o módulo e terá acesso a todos os métodos do módulo.
Além disso, caso precise usar um módulo em todo o seu aplicativo, você pode incluí-lo no controlador de aplicativo.
fonte
ApplicationHelper
?