ViewComponent::Base def initialize(title:) @title = title end end app/components/example_component.rb div これはExampleTemplateです div = @title app/components/example_component.html.slim(少し編集) app/views/home/playground.html.slim(適当なViewの中でコンポーネントを使う) いい感じで表示されている! (スタイルが当たってなくて寂しいが) 適当なページで表示させる = render ExampleComponent.new(title: 'タイトルです')
gem "lookbook", ">= 2.3.4" end Rails.application.routes.draw do if Rails.env.development? mount Lookbook::Engine, at: "/lookbook" end end これだけでStorybookみたいな感じで見られる! http://localhost:3000/lookbook にアクセスする
:component do it "renders component" do render_inline(described_class.new(title: "my title")) expect(page).to have_text "my title" end end $ docker compose exec web rspec spec/components -e DB_SETUP_SKIP=true ~~~略~~~ ExampleComponent renders component ~~~略~~~ Finished in 7.42 seconds (files took 2.91 seconds to load) 1 example, 0 failures spec/components/example_component_spec.rb テストの実行 指定のタイトルが入っていたらOKという雑なテスト 普通に動いてくれる! ⼀連の流れとして最低限は良さそう!