16
16

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.

[PR]rack-webconsole-pry を使ってみる、あとWeb+DB Pressに書きました

Last updated at Posted at 2012-10-24

独特言語パイソンのWSGIユーティリティ群、Werkzeugには例外発生時に ウェブコンソールを立ち上げる 機能があるそうな。Fukuoka.rb関係者のパイソニスタにどや顔で自慢され(表現には誇張があります)、「うらやましい〜〜〜〜」と思っていたらRuby(Rack)にも似たような機能があった。

rack-webconsole-pry (Rubygems.org) はブラウザ上でREPLを立ち上げる機能を提供する。REPLは、おなじみ Pry である。Rackミドルウェアとして設定すれば使えるが、gemで入るバージョンは初期設定ではバグがあり、ちゃんと立ち上がらない……。 このプルリクエスト を参照せよ。

最新版を取ってきても良いが、以下の設定を追記してもよい。

Rack::Webconsole.key_code = [96]

Sinatra で試してみる。

Gemfile
source :rubygems

gem 'pry'
gem 'rack-webconsole-pry'
gem 'sinatra'
app.rb
require 'bundler'
Bundler.setup
require 'sinatra'
require 'rack-webconsole'
require 'cgi'
configure :development do
  use Rack::Webconsole
  Rack::Webconsole.inject_jquery = true
  Rack::Webconsole.key_code = [96]
end

get '/' do
  @foo_value = settings.foo_value rescue nil
  erb <<EOT
<!DOCTYPE html>
<html>
<head><title>Rack::Webconsole sample</title></head>
<body>
<h1>Rack::Webconsole sample</h1>
<pre style="font-family: Courier, monospace;">
This is a sample app for Rack::Webconsole
Please type ` (backquote) and in the web terminal,
try the command below:

    Sinatra::Application.set :foo_value, "Some Text"

and then reload me...

<strong>settings.foo_value = <%= CGI.escapeHTML @foo_value.inspect %></strong>

You even can add routes by sinatra verb!
</pre>
</body>
</html>
EOT
bundle install
ruby app.rb

in http://localhost:4567

立ち上がる

「`」(バッククオート)を押すとコンソールが出現する。

試しに、表示されている通り以下の内容をコンソールに入れてみる。

Sinatra::Application.set :foo_value, "Some Text"

リロードすると、Sinatraのsettingの値が変更されていることが分かる。

02

また、以下のように入力してみる。Routingの追加。

Sinatra::Application.get('/hello') { "Say hello" }

03

http://localhost:4567/hello にアクセスすると、確かにページが追加されている!

04

注意点

この通り、アプリケーションの状態まで動的に変更できて超凄いので、うっかり productionで有効にしないように 気をつけましょう!

Rails ではdevelopmentでないと有効にならないようになっていますが、Sinatraなどの場合は特に要注意です。configure :development do ~ endブロックで設定するようにしましょう。

[PR]そんな強力なPryについてもっと知りたいあなたは

WEb+DB Press vol.71 に、Pryのことについて書きましたので是非ご一読ください!

http://image.gihyo.co.jp/assets/images/cover/2012/9784774153209.jpg

と言いつつ、実は紙幅とテーマの関係で rack-webconsole-pry に割いた文字数は少ないので、Qiitaでフォローアップの記事を書いてみました。上記と同じようなコードは サポートページ から落とせます。記事自体は、基本的なところから拡張についてまで一通り書いています。是非、感想を聞かせてくださいね〜。

16
16
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
16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?