kinoppyd.dev

kinoppyd.dev

kinoppyd dev - page 10

kinoppyd blog

Gemを初めてRubyGemsにリリースしたよ

2015-09-22 22:08:49 +0900

作ったもの

wtfpl_init

何これ

たまにしょうもないもの(たとえば、キルミーベイベー画像ジェネレータとか)を作ってGithubにプッシュするけれど、ライセンスとかもうどうでも良いし好きに使って欲しいけど、ライセンスの表記が無いのも使いたい人が戸惑う。そういうときに最高のライセンスWTFPLがあるのだが、作ったものにいちいちこいつを入れるのもめんどくさい。

そんなときに、コマンド一つでWTFPLのライセンスファイルを生成してくれるGemです。

Usage

$ echo 'gem "wtfpl_init" >> Gemfile
$ bundle install
$ bundle exec wtfpl

これで、wtfplコマンドを実行したディレクトリにLICENSE.mdファイルが作られて、中にはWTFPLのplain text が入っている。

Gemの作り方

RubyGemsのページDevelopers.IOのブログが参考になります。

RubyGemsのページが王道なのだろうけど、Bundlerが大部分を肩代わりしてくれるので、大事な手順は次の二つだけ

RubyGemsのAPIキーを手に入れる

$ curl -u YOUR_RUBYGEMS_USER https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials

このコマンドで、RubyGemsからGemのパブリッシュに必要なAPIキーを手に入れられる。もちろん、先にRubyGemsに登録しておく必要はあるので、サインアップを忘れずに。

curlでアクセスするときにユーザーネームを渡すので、Basic認証がかかり、パスワードを聞かれる。サインアップしたときのパスワードを入れると、APIキーが降りてきて、それを$HOME/.gems/credentials に保存する

Gemをビルドしてパブリッシュ

BundlerのRakeタスクを使って、Gemをビルド&パブリッシュする

$ bundle exec rake spec
$ bundle exec rake build
$ bundle exec rake release

とりあえずテスト回して、ビルドして、リリース。rake releaseを実行すると、Githubに対象のタグを勝手に打ってくれるらしい。(Rakeタスクを呼んでないからどういう動作になっているのか分からないので、後日読もう)

この二つの手順だけで、GemをRubyGemsにパブリッシュすることが出来る。実際に作ったものが役に立つのかどうかは知らないけれど、変に名前空間を食いつぶすような名前で無ければ、何か作ったら適当にパブリッシュするのが良いんじゃないかと思う。今後は頑張ろう。


dokku-alt の謎2

2015-09-13 02:00:05 +0900

正確には、dokkuが使っているHeroku buildpacksの謎

Railsのデータベースアダプタとして、mysql2を使っているのに、何故かdokku-altにデプロイすると、mysqlをrequireして起動の時に死ぬ。なんでだ!?

Heroku buildpacks

Herokuにアプリをデプロイすると、自動的にビルドを実行してくれるすごいやつ。オープンソースなので、dokkuも使っている。

で、こいつは恐ろしいことに、Railsアプリをデプロイすると、dokkuのコンテナ単位の設定を元にconfig/database.ymlを書き換える。便利だけど恐ろしい。

Railsの場合、Railsのコンテナに設定しているDATABASE_URLの設定を読み込み、それをURIとしてパースする。その後、スキーマを取得して、そのスキーマをadapterとして設定する。だいたいの場合は、MySQLを使うならDATABASE_URLはこんな感じの設定になると思う。

mysql://user:pass@db.domain.tld/database_name

普通なら別に良いのだが、Railsのadapterはそのまま起動時にrequireされるgem名として使用するので、mysqlの部分がそのままadapterにセットされて、mysql2を使いたいのに使えない状況になる。

解決策は、単にスキーマ部分をmysql2にすれば良い

mysql2://user:pass@db.domain.tld/database_name

良いのだが、非常に気持ち悪い気がする……


dokku-alt の謎

2015-09-12 19:11:09 +0900

デプロイ出来ない

dokku-alt のサーバーは以前に作ったが、何故かしばらくデプロイしないうちに、デプロイが出来なくなっていた

調べていると、どうもsshでdokkuユーザーに繋げていないことが分かったので、解決策を探す


YAPC::Asia Day2 行ってきたよ

2015-08-23 00:51:04 +0900

行ってきたよ

毎度おなじみ、ブログを書くまでがYAPCだと骨の髄までたたき込まれたので書くよ。

訂正:所々スピーカーの方の名前を間違えていたので修正しました


YAPC::Asia Day1 行ってきたよ

2015-08-21 20:23:36 +0900

行ってきたよ

YAPC::Asiaは今年で最終回らしいので、行ってきた。去年も行ったけど。

YAPC::Asiaに参加すると、毎回セッションの最初と最後に「ブログを書け、介錯してやる」と脅しを掛けられる。もっぱら坊主やひげで体格の良いおっさんが多い。怖いから書くことにしよう。

本当は前夜祭にも行きたかったけど、仕事終わらなかったよね。懇親会も参加したかったけど、いつの間にか登録終わってた。

http://yapcasia.org/2015/

聞いてきたセッション


UbuntuでMySQLの通信をSSL化するときは、証明書のディレクトリが重要らしい

2015-07-27 03:29:02 +0900

またDBサーバーを移動させる必要が生じたので、以前の経験を元に新しくDBサーバーを作った。

前回はCentOSだったが、こんどはUbuntuのLTSに変えてみたところ、前回と同じ方法ではMySQLのSSL化が有効にならなかったので、メモしておく。

最初は、証明書の権限とか、作り方に問題があるのかと思っていたが、どうにも手詰まりになって検索したところ、次のようなフォーラムを見つけた。

Enabling SSL in MySQL - Ask Ubuntu

どうやら、UbuntuでMySQLのSSL化を有効にするときは、証明書ファイルとかを全部/etc/mysql の下に置かなくてはいけないらしい。

そんな馬鹿なと思ったけど、実際に/etc/mysql-ssl というディレクトリに作っていた証明書を/etc/mysql に移動してみたところ、何度やってもDISABLEだったSSLのステータスが、YESに変わった。

わけがわからんが、忘れないようにメモしておく。

追記

Wordpressから、MYSQL_CLIENT_SSLフラグをオンにしても動かなかった理由も解決した

MySQLでSSL接続を有効にする - Qiita

On connecting to MySQL via SSL getting ERROR 2026 (HY000): SSL connection error: protocol version mismatch - Stack Overflow

鍵を作った直後にこれをやろう

ただ、何故かファイルに差分は生まれなかったのだが……謎い


やったーキルミーベイベーの画像ジェネレーター作ったよー

2015-05-30 03:44:22 +0900

エクセレントなフォント

GN’s Side

TopPage

http://kill-me-baby.tolarian-academy.net/

Usage

http://kill-me-baby.tolarian-academy.net/キルミー体操

http://kill-me-baby.tolarian-academy.net/ここに好きな文字

Framework

Sinatra + RMagick

単一ページのアプリを作るなら、やっぱりSinatra最高

Railsは最初にActiveRecordを除外する設定とかやらなきゃいけないから、こういう一発ネタに向かない

Sourcecode

https://github.com/YasuhiroKinoshita/kill-me-baby-image-generator


ConoHaとさくらのVPSにdokku-altを入れて、ブログと開発環境を柔軟に

2015-05-17 18:10:53 +0900

Dokku-alt をConoHaVPSに入れて、個人PaaS環境を充実させた話

このブログは、今のところさくらVPSのWebインスタンスと、ConoHaVPSのDBインスタンスで動いている。動いてはいるが、さくらVPSの方が3年くらい前に右も左もよく分かってない状態で立ち上げたNginx+Apache+Wordpress構成で、いい加減メンテが不可能な状態に陥っており、Wordpressのバージョンを上げることすらままならなくなっていた。

そこで、さくらVPSのインスタンスを一回全部消して、Ubuntu+Dokku-altを立てて、そこでブログをはじめとするいろんな開発環境を集約してしまおうと考えた。

まずはConoHaVPSで予行練習

ConoHaVPSの素晴らしいところは、このはちゃんがあざとい清楚可愛いだけじゃなくて、VPSを簡単に立てたり落としたり出来る、まるでさくらクラウドのような使い勝手にある。そのため、一個インスタンスを立てるためになんだか面倒なさくらVPSでなにかする前に、ConoHaVPSを使って予行演習を行った


psコマンドをStructの配列として扱うRubyのクラスを適当に書いた

2015-05-04 03:11:45 +0900

既にそういうgemがありそうだとはわかってて書いた。

このところ、家の録画サーバーが、おそらくハードウェア的な理由で不安定だったので、定期的にプロセスを監視するスクリプトを書く過程でこんな感じのものが必要になり、とりあえずgistにあげておいた。

Forwardableモジュールとかの知見はEffectiveRubyという本から得たものなので、そのうちまとめたい。

とりあえず、ProcessListクラスをnewすると、newした瞬間のps aux をStruct化したものの配列を得ることが出来る。

$ pry
[1] pry(main)> require './ps_test'; ps = ProcessList.new
[2] pry(main)> ps.first.command
=> "/usr/lib/systemd/systemd --switched-root --system --deserialize 23"

Fedora20で動作確認はしたが、他の環境で動くのかどうかは全くわからない。


Raspberry Pi 2 に通電

2015-02-28 19:46:19 +0900

**

Raspberrypi2

買ったは買ったけど、色々時間がつらくてしばらく放置していたので、3週間越しでやっと通電できた。

NOOBS

raspberrypi.orgのヘルプに従い、NOOBSを使ってRaspbianを導入。なんかよくわからないテンションアゲアゲのおばちゃんが丁寧に説明してくれるので、特につまづく点はなし

Raspbian

ラズパイ用にカスタムされたDebianらしい。だったらとりあえず

sudo aptitude update
sudo aptitude upgrade

まあ当たり前だけど、普通のPCよりかなり遅い

Wi-Fi

無線でつなげれば多分最強な気がして、テキトーにやすかったBuffaloの無線LANアダプタを買ってきた。普通にデバイスとして認識するし、ちゃんと繋がるのも確認した。が、何故かケータイのテザリングのAPは見えるのに、ステルスモードにしてある自宅のルーターのAPには繋げない。追々調べるとしても、とりあえず今は有線接続で我慢。

何をしよう

さあ、このラズパイは何に使おう。とりあえず、会社の人に色々おすすめしてもらったセンサ類を買ってきてつないでみよう。