Sledgeを知っていますか?
Sledgeというのは、PerlのWebアプリケーションフレームワークです。
2003年にオープンソースとして公開されました。公式ページのurl(http://sl.edge.jp/)に残るように、開発したエッジ(後のLivedoor)の名を冠したプロダクトです。
公開から15年近く経っていますが、Webサービスのバックエンドとしてインターネットの片隅で稼働しており、うちもここ数ヶ月業務で触れているプロダクトです。
Sledge関連情報
インストールしようとググると、Apache1.3とmodperlでの構築を前提としている記事にあたります。
そして現在、Apache1.3とmodperlは現行のOSにインストールする方が難しい・・・ただし、一度動いてしまえば、これらの記事が大いに参考になります。
特にお世話になっている記事を紹介します。
そして、貴重な活字での情報です。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
とは別)が動いて、やったー!って思ったらもっとシンプルな実装が元々あったというね。
とりあえず、これで動きました、という例を残しておきます。