Project

rbs_rails

0.13
A long-lived project that still receives updates
A RBS files generator for Rails application
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

>= 0
>= 1
 Project Readme

RBS Rails

RBS files generator for Ruby on Rails.

Installation

Add this line to your application's Gemfile:

gem 'rbs_rails', require: false

And then execute:

$ bundle install

Or install it yourself as:

$ gem install rbs_rails

Usage

Run the following command. It generates lib/tasks/rbs.rake.

$ bin/rails g rbs_rails:install

Then, the following three tasks are available.

  • rbs_rails:generate_rbs_for_models: Generate RBS files for Active Record models
  • rbs_rails:generate_rbs_for_path_helpers: Generate RBS files for path helpers
  • rbs_rails:all: Execute all tasks of RBS Rails

You can also run rbs_rails from command line:

# Generate all RBS files
$ bundle exec rbs_rails all

# Generate RBS files for models
$ bundle exec rbs_rails models

# Generate RBS files for path helpers
$ bundle exec rbs_rails path_helpers

Install RBS for rails gem

You need to install rails gem's RBS files. I highly recommend using rbs collection.

  1. Add gem 'rails' to your Gemfile.
  2. Then execute the following commands
    $ bundle install
    $ bundle exec rbs collection init
    $ bundle exec rbs collection install

Configuration

You can customize the behavior of rbs_rails via configuration file. Place one of the following files in your project:

  • .rbs_rails.rb (in the project root)
  • config/rbs_rails.rb
RbsRails.configure do |config|
  # Specify the directory where RBS signatures will be generated
  # Default: Rails.root.join("sig/rbs_rails")
  config.signature_root_dir = "sig/rbs_rails"

  # Define which models should be ignored during generation
  config.ignore_model_if do |klass|
    # Example: Ignore test models
    klass.name.start_with?("Test") ||
    # Example: Ignore models in specific namespaces
    klass.name.start_with?("Admin::") ||
    # Example: Ignore models without database tables
    !klass.table_exists?
  end
end

Steep integration

Put the following code as Steepfile.

target :app do
  signature 'sig'

  check 'app'
end

That's all! Now you can check your Rails app statically with steep check command.

Development

After checking out the repo, run bin/setup to install dependencies.

You can also run bin/console for an interactive prompt that will allow you to experiment.

This gem uses RBS::Inline to generate RBS files. Please mark up your code with RBS comments. And then, run bundle exec rake rbs_update to reflect the type definitions to the RBS files.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and push it to the GitHub (via Pull Request). Then, GitHub Actions will automatically create a release tag and publish the gem to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/pocke/rbs_rails.