Standard File Naming Conventions in Ruby

RubyFileNaming ConventionsConventions

Ruby Problem Overview


For a file containing the given class, SomeCoolClass, what would be the proper or standard filename?

  1. somecoolclass.rb
  2. some_cool_class.rb
  3. some-cool-class.rb
  4. SomeCoolClass.rb

or some other variation?

I noticed in the Ruby stdlib, versions 1, 2 and 3 are used.

Ruby Solutions


Solution 1 - Ruby

With just Ruby (i.e. not Rails), naming is only a convention. In Rails the convention of using underscores is necessary (almost).

I think convention #2 lowercase_and_underscore.rb is more common and looks pretty good, though an article Here says lowercasenounderscore.rb is the Ruby convention.

Pick either which ever convention is more common or which ever one you like more. The most important thing is to be consistent within a project.

Solution 2 - Ruby

I personally think the hyphen as word separator makes for maximum readability and typability in general, so I recommend that where possible (in some contexts, a hyphen can't be used, such as in identifiers in most languages). One important thing to bear in mind is that the scheme you pick will have a bearing on the require statement that users will use with your lib, and you want to avoid having a different gem name than library name.

Bad
# gem install my_cool_lib
require 'my-cool-lib'

# gem install MyCoolLib
require 'my_cool_lib'
Good
# gem install my_cool_lib
require 'my_cool_lib'

# gem install my-cool-lib
require 'my-cool-lib'

Unfortunately, a small handful of libraries violate this simple usability rule. Don't be one of those libraries. :)

Solution 3 - Ruby

I would recommend lower case characters with underscores (number 2 in your question). It's true that this naming scheme is the convention in Rails and not necessary in non-Rails projects. However, I would still stick to the Rails convention because most Ruby programmers are probably using Ruby exclusively for Rails anyway.

Solution 4 - Ruby

my-proj
├── README
├── lib
│   └── some_cool_class.rb
└── test
    └── some_cool_class_test.rb

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionClint PachlView Question on Stackoverflow
Solution 1 - RubyDaniel BeardsleyView Answer on Stackoverflow
Solution 2 - RubyPistosView Answer on Stackoverflow
Solution 3 - RubyChristoph SchiesslView Answer on Stackoverflow
Solution 4 - RubyMikeView Answer on Stackoverflow