Nik So
Nik So

Reputation: 16811

Where to put code snippets in Rails?

I have this code snippets that generates a signature for POSTs. The detail of it is not important, but what I want to know is: since it is not a model-related chunk of code, it really can be use anywhere: in controllers, in models, in view helpers; even in views. So I am unsure where and, even bigger of a problem, how to activate the use of it once I place it in some location.

Is it what those "require" statements are all about? That you can acquire some functionality through a "require" statement in the current file you are working on?

Just so that we have an example to talk about, say, I have a little snippet of code that does cubing:

def cube_it(num)
  num**3
end

I know that I will be using it in various places across the application, so where should I put it? and when I do need to use it, how can I "summon" it?

Thank You

Upvotes: 5

Views: 1286

Answers (3)

ruhui0806
ruhui0806

Reputation: 31

If you are using vs code, go to Menu at the screen top: Coder --> settings --> Configure UserSnippets --> open ruby.json file, and add the snippets inside the {}:

"Ruby Cube": {
"prefix": "cube_it",
"body": ["{  }**3"],
"description": "Rubys cube the number."
}

when you type "cube_it" in .rb files, it will show:

{  }**3

Upvotes: 0

Samuel
Samuel

Reputation: 38346

I would suggest putting your code inside a module named Math in lib/math.rb.

math.rb
module Math
  class << self
    def cube_it(num)
      num*3
    end
  end
end

You don't need any require statements with this (rails does it for you) and you can easily call it with Math.cube_it("Hi").

There are other ways of adding code to a rails application, but this is the best way.

Upvotes: 4

Alex Korban
Alex Korban

Reputation: 15126

Rails autoloads modules and classes when they are first used. You can put your function into a module (or class) and put the file into the lib directory in your application. require statements aren't used in Rails apps often.

Upvotes: 2

Related Questions