Railsに初めて触れる方を対象にしたチュートリアルです
ovto
というRubyでフロントエンドを書けるフレームワークをRailsに導入するチュートリアル
まず、rails new
を実行し、Railsアプリのひな型を作成します
rails new ovto
次に、作成したRailsアプリのディレクトリへと移動します
cd ovto
先ほどのrails new
でsqlite3
のインストールがエラーになっている場合は、以下のようにバージョンを指定してください
gem 'sqlite3', '1.3.13'
その後、bundle install
を実行します
bundle install
Opal
をRailsに導入します
Gemfile
にgem 'opal-rails'
を追加します
gem 'opal-rails'
その後、bundle install
を実行します
次に、app/assets/javascripts/application.js
をリネームし、app/assets/javascripts/application.js.rb
とします
そして、app/assets/javascripts/application.js.rb
を以下のように修正します
require 'opal'
require 'rails-ujs'
require 'turbolinks'
require 'activestorage'
require_tree '.'
これでOpal
の導入は完了です!
次に、Ovto
で作成したコンポーネントを表示できる静的なページ作成します
rails g controller web index
次に、config/routes.rb
にてroot
へのルーティングを設定します
Rails.application.routes.draw do
root 'web#index'
end
次に、Ovto
の導入を行います
Gemfile
にgem 'ovto'
を追加します
gem 'ovto'
その後、bundle install
を実行します
bundle install
その後、app/assets/javascripts/ovto_app/main.rb
を以下のように作成します
require 'ovto'
class MyApp < Ovto::App
class State < Ovto::State
end
class Actions < Ovto::Actions
end
class MainComponent < Ovto::Component
def render(state:)
o 'div' do
o 'h1', 'Hello Ruby on Rails & Ovto!'
end
end
end
end
MyApp.run(id: 'ovto')
最後に、app/views/web/index.html.erb
に以下のコードを追加します
<div id="ovto"></div>
あとはrails s
を実行して
rails s
localhost:3000
にアクセスし、Hello Ruby on Rails & Ovto!
と表示されていればOKです
これでOvto
の導入は完了です!
次に、Ovto
でカウンターを作成します
app/assets/javascripts/ovto_app/main.rb
を以下のように変更します
require 'ovto'
class MyApp < Ovto::App
class State < Ovto::State
item :count, default: 0
end
class Actions < Ovto::Actions
def add_count(state:, count:)
return {count: state.count + count}
end
end
class MainComponent < Ovto::Component
def render(state:)
o 'div' do
o 'h1', 'Hello Ruby on Rails & Ovto!'
o 'input', type: 'button', onclick: ->(e){ actions.add_count(count: 1) }, value: 'Sum'
o 'p', state.count
end
end
end
end
MyApp.run(id: 'ovto')
これでSum
というボタンが表示され、クリックすると表示されている数字が増えていくようになります!
こういった形でOvto
でフロントエンドを作ることができます!