Helpers de métaprogrammation, JIT et auto-tuning pour des services Ruby haute performance.
gem install storm_metaou dans votre Gemfile:
gem "storm_meta", "~> 0.1.0"require "storm_meta"
# Activer YJIT si disponible
StormMeta::JIT.enable_yjit!(verbose: true)
# Métaprogrammation
class Room
extend StormMeta::Meta
dynamic_attr :name, :owner_id
boolean_flags :archived, :locked
end
room = Room.new
room.name = "Alpha"
room.archived!
puts room.archived? # => true
# Auto-tuning
strategies = {
ruby: ->(x) { x.to_s },
alt: ->(x) { "#{x}" }
}
best = StormMeta::AutoTune.pick_best(strategies, warmup_input: 123)
puts StormMeta::AutoTune.last_choice # => :ruby ou :alt
# Actions DSL
class UserActions
extend StormMeta::Action
action :ban_user do
param :user_id, :integer
step :load_user
step :mark_banned
end
endStormMeta::JIT— activation YJIT en toute sécurité (supports_yjit?,enable_yjit!,with_yjit).StormMeta::Meta— helpers pourdynamic_attr,boolean_flags,dsl.StormMeta::AutoTune— benchmarke des stratégies et choisit la plus rapide.StormMeta::Action— DSL léger pour décrire et exécuter des actions.
- Ruby
>= 3.2.0recommandé pour un support YJIT moderne.
MIT — voir LICENSE.
Voir NOTICE.md pour les avis et informations tiers éventuels.