sironekotoroの日記

Perl で楽をしたい

やっとこさSledgeが動いた

Sledgeを知っていますか?

Sledgeスレッジというのは、PerlのWebアプリケーションフレームワークです。

2003年にオープンソースとして公開されました。公式ページのurl(http://sl.edge.jp/)に残るように、開発したエッジ(後のLivedoor)の名を冠したプロダクトです。

公開から15年近く経っていますが、Webサービスのバックエンドとしてインターネットの片隅で稼働しており、うちもここ数ヶ月業務で触れているプロダクトです。

Sledge関連情報

インストールしようとググると、Apache1.3とmodperlでの構築を前提としている記事にあたります。

そして現在、Apache1.3とmodperlは現行のOSにインストールする方が難しい・・・ただし、一度動いてしまえば、これらの記事が大いに参考になります。

特にお世話になっている記事を紹介します。

techblog.karupas.org

blog.livedoor.jp

www.skyarc.co.jp

そして、貴重な活字での情報です。vol.1 で終わってしまっているのが悲しい・・・

Sledgeをインストールする

環境

macos 10.14 で試しています。

~/Desktop $ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.5
BuildVersion:   18F132

Perlは 5.28 を利用。

~/Desktop $ perl -v

This is perl 5, version 28, subversion 0 (v5.28.0) built for darwin-2level
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2018, Larry Wall
(中略)

Sledgeの立ち上げにはPlackを使います。 Plackのバージョンは 1.0047

~/Desktop $ perl -MPlack -le'print $Plack::VERSION'
1.0047
~/Desktop $ plenv -v
plenv 2.2.0

インストール

ソースをGithubからダウンロード

tokuhiromさんのPSGI対応版を使います。

~/Desktop $ git clone git@github.com:tokuhirom/Sledge.git
Cloning into 'Sledge'...
remote: Enumerating objects: 174, done.
remote: Total 174 (delta 0), reused 0 (delta 0), pack-reused 174
Receiving objects: 100% (174/174), 79.06 KiB | 487.00 KiB/s, done.
Resolving deltas: 100% (19/19), done.

作成したローカルリポジトリの中に入り、リモートブランチを確認します。

~/Desktop $ cd Sledge/
~/Desktop/Sledge (master) $ git branch --remote
  origin/HEAD -> origin/master
  origin/feature-psgi
  origin/master

origin/feature-psgi に切り替えます

~/Desktop/Sledge (master) $ git checkout -b future-psgi origin/feature-psgi
Branch 'future-psgi' set up to track remote branch 'feature-psgi' from 'origin'.
Switched to a new branch 'future-psgi'

ローカルにcloneしたリポジトリの中に eg/hello.psgi というファイルがあるので、これを一つ上の階層にコピーします。

~/Desktop/Sledge (future-psgi) $ cp eg/hello.psgi .

コピーしたファイルを編集します。

~/Desktop/Sledge (future-psgi) $ vi hello.psgi

3行目に use lib qw(lib/) を追加します。

use strict;
use warnings;
use lib qw(lib/);

plackupで立ち上げます

~/Desktop/Sledge (future-psgi) $ plackup hello.psgi
HTTP::Server::PSGI: Accepting connections at http://0:5000/

ブラウザで http://localhost:5000 にアクセスして、てすと と出てくればokです。 これはt/templateの中にあるunicode.htmlってのを読み込んで表示しています。

ここまで超苦労した

これ、上に書いてある手順だけだと簡単に思えるかもしれないけど、ここまで持ってくるの、めっちゃ大変だったんだからー

まぁ、主な理由はこの hello.psgi を見つけられなくて、会社にあるSledgeシンプル版を参考にして色々と遠回りしてたのが原因です。

このtokuhiromさんのPSGI対応版が独習用に良いんじゃないかな、というのはPerl入学式の2月の合宿でカルパさんやわいとんさんから聞いてはいたけど、そっから思いっきり回り道して、cartonでモジュールインストールしてみたり、会社で使っているやつを参考にして編集したりして、動かない日々が続いてたわけです。

で、なんとか自前で作ったページ(hello.psgiとは別)が動いて、やったー!って思ったらもっとシンプルな実装が元々あったというね。

とりあえず、これで動きました、という例を残しておきます。