8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

最近のOpalはopal-sprocketsが内蔵されている

Last updated at Posted at 2014-06-10

いつの間にかopal-sprocketsがobsoleteになって、Opal本体に組み込みになったらしい。

OpalはJavaScriptで書かれたRuby処理系である。opal-sprocketsは「とりあえずOpalを使った静的ページを作ってみたい」ときに使うやつ。ソースを保存すると自動で再コンパイルとかしてくれる。

最新のOpal 0.6.2ではこれがopal gemに内蔵されているので、http://opalrb.org/docs/using_sprockets/ に書かれているようにやるとHello Worldまでできる。せっかくなのでここにもメモしておきます。

準備

以下のファイルを用意する。

Gemfile
source 'https://rubygems.org'

gem 'opal', '>= 0.6.0'
app/application.rb
require 'opal'

puts "hello world"
index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>opal server example</title>
    <script src="/assets/application.js"></script>
  </head>
  <body>
  </body>
</html>
config.ru
require 'bundler'
Bundler.require

run Opal::Server.new { |s|
  s.append_path 'app'

  s.main = 'application'

  s.index_path = 'index.html'
}

用意できたら以下のようにする。

$ bundle install
$ bundle exec rackup
$ open http://localhost:9292/

これでページが表示できて、開発者コンソールに「hello world」と出力されるはず。あとはapp/application.rbにOpalのコードを書けば、ブラウザをリロードするだけで自動的にJSにコンパイルされて実行できる。

いまのOpalはRubyのひと通りの機能がだいたいあるので、http://opalrb.org/try/# ここにデモがありますが、クラス作ったりとか普通に動きます。

class User
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  def admin?
    @name == 'Admin'
  end
end

user = User.new('Bob')
puts user
puts user.admin?
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?