Sha256: 15ecef770e6a64501e2e7580182e3ede452c145a5032839acec991baf0fc51f9
Contents?: true
Size: 1.92 KB
Versions: 4
Compression:
Stored size: 1.92 KB
Contents
require 'rake' require 'rake/tasklib' module RbsRails class RakeTask < Rake::TaskLib attr_accessor :ignore_model_if, :name, :signature_root_dir def initialize(name = :rbs_rails, &block) super() @name = name block.call(self) if block setup_signature_root_dir! def_generate_rbs_for_models def_generate_rbs_for_path_helpers def_all end def def_all desc 'Run all tasks of rbs_rails' deps = [:"#{name}:generate_rbs_for_models", :"#{name}:generate_rbs_for_path_helpers"] task("#{name}:all": deps) end def def_generate_rbs_for_models desc 'Generate RBS files for Active Record models' task("#{name}:generate_rbs_for_models": :environment) do require 'rbs_rails' Rails.application.eager_load! dep_builder = DependencyBuilder.new ::ActiveRecord::Base.descendants.each do |klass| next unless RbsRails::ActiveRecord.generatable?(klass) next if ignore_model_if&.call(klass) path = signature_root_dir / "app/models/#{klass.name.underscore}.rbs" path.dirname.mkpath sig = RbsRails::ActiveRecord.class_to_rbs(klass, dependencies: dep_builder.deps) path.write sig end if dep_rbs = dep_builder.build signature_root_dir.join('model_dependencies.rbs').write(dep_rbs) end end end def def_generate_rbs_for_path_helpers desc 'Generate RBS files for path helpers' task("#{name}:generate_rbs_for_path_helpers": :environment) do require 'rbs_rails' out_path = signature_root_dir.join 'path_helpers.rbs' rbs = RbsRails::PathHelpers.generate out_path.write rbs end end private def setup_signature_root_dir! @signature_root_dir ||= Rails.root / 'sig/rbs_rails' @signature_root_dir = Pathname(@signature_root_dir) @signature_root_dir.mkpath end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
rbs_rails-0.10.0 | lib/rbs_rails/rake_task.rb |
rbs_rails-0.9.0 | lib/rbs_rails/rake_task.rb |
rbs_rails-0.8.2 | lib/rbs_rails/rake_task.rb |
rbs_rails-0.8.1 | lib/rbs_rails/rake_task.rb |