ajaxで投稿してその結果を調べるみたいなテストでテストが通ったり通らなかったりする。投稿が反映される前に見に行くことがあるから。

feature "Posting a comment", js: true do
  scenario "as signed user" do
    comment_id = Comment.last.id + 1
    within("#new_comment") do
      fill_in 'comment[body]', with: 'コメントのテスト'
    end
    click_button '規約に同意してコメントする'
    sleep 1 # PLZ WAIT!! FIXME!!
    find("#comment_#{comment_id}").should have_content('コメントのテスト')
  end
end

CapybaraのREADMEにも書いてあるけどデフォルトは2秒待つようだけど5に変えたら行けた。(sleep 1は取りましたw)

# spec/spec_helper.rb:
RSpec.configure do |config| 
  Capybara.default_wait_time = 5
end

Facebook OAuthとかで証明書ちゃんと設定しないとSSLのエラーが出る。

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

certifiedがgemの中に証明書持ってるので使うと楽。

$ gem install certified

stevegraham/certified · GitHub

ceder stackバージョン。

ほぼ下記のまんまです。

Creating Static Sites in Ruby with Rack | Heroku Dev Center

$ mkdir -p public/{images,js,css}
$ touch site/{config.ru,public/index.html}
# Gemfile:
source :rubygems
gem 'rack'
# config.ru:
use Rack::Static,
  urls: ['/images', '/js', '/css'],
  root: 'public'

run lambda { |env|
  [
    200,
    {
      'Content-Type'  => 'text/html',
      'Cache-Control' => 'public, max-age=86400'
    },
    File.open('public/index.html', File::RDONLY)
  ]
}

komagata.orgはまんまコレなのでソースへのリンクも置いておきます。heroku便利ですね。

komagata/komagata-org · GitHub

debian(wheezy)でお手軽なiptablesのフロントエンドはないかなと、Debian WikiのFirewallのページを探していたらufw(Uncomplecated Firewal)が便利そうだったので使ってみました。(これ絶対元々はUbuntu Firewallとかそういう名前だっただろう。汚い、流石Ubuntu汚い)

ufw気に入った

$ sudo apt-get install ufw

ufwは単なるiptablesのフロントエンドでufw show rawでiptablesの生ruleも表示できるそうです。良さそうな予感。

$ sudo ufw default deny
$ sudo ufw allow 10022
$ sudo ufw allow 80/tcp
$ sudo ufw enable

あら簡単。(sshは10022ポートに変更してるので)

何回来たらrejectとか細かい設定もできるみたいですが、インフラ弱者の俺にはこれでも十分過ぎる程です。

その昔あったMojavi Japan(mojavi.net)というサイトがDreamhostから発掘されたので移行しようと思ったんですが、XOOPSが古過ぎて動かん・・・。

移行先は素敵なさくらVPSにDebian Wheezyを入れてるのでPHPが5.4.4と眩いばかりのバージョンで動きやしない。その点WordPressはかなり古いバージョンだったのに上書きするだけでバージョンアップが走った。すげえ。

どなたか移行方法ご存知の方がいらっしゃったら教えていただけると嬉しいです・・・。わからなかった場合はAmazon Glacier行きの予定です。

散らかった自分のドメインやサーバーをまとめるためにさくらVPS 1Gを借りてDreamhostを解約しました。なるべくHerokuに置いて、厳しめのものはVPSに置く腹積もりです。(WordPressでできたサイトとか)

6年も使ってたんだなあ。お世話になりました。

  • konacha: mochaをrailsで良い感じにするやつ
  • mocha: jsをrspecっぽくテストできるやつ(like a jasmine)
  • chai: mochaのassertionライブラリ
$ brew install qt
# Gemfile:
group :development, :test do
  gem 'capybara-webkit'
  gem 'konacha'
end
# config/initializers/konacha.rb:
Konacha.configure do |config|
  config.spec_dir = 'spec/javascripts'
  config.driver = :webkit
  config.stylesheets = %w(application)
end if defined?(Konacha)
# app/assets/javascripts/foo.js.coffee:
class Foo
  bar: ->
    'bar'
# spec/javascripts/foo_spec.js.coffee:
#= require foo
  
describe 'Foo', ->
  it '#bar', ->
    (new Foo).bar().should.equal('bar')
% rake konacha:run
F

  Failed: Foo #bar
    ReferenceError: Can't find variable: Foo

Finished in 0.00 seconds
1 examples, 1 failed, 0 pending

そりゃそうだ。だってcoffeeだと

(function() {
  var Foo;
  Foo = (function() {
    function Foo() {}
    Foo.prototype.bar = function() {
      return 'bar';
    };
    return Foo;
  })();
}).call(this);

こうやってグローバグ汚さないように囲われてるんだから。だからといって元々デフォルトOFFだった--bareオプションは今はデフォルトONになってるのでわざわざ外すもの気持ち悪い。

だったら

class @Foo

って書けばいいじゃん。って言ってるんだけどマジで?みんなどうやってるの?

sprockets-commonjsが標準で入ってファイル名にmoduleが必要じゃなきゃいいんだけどなあ。

  1. capybaraを2.xに上げる
  2. capybara-webkitが動かなくなる
  3. poltergeistに移行する
  4. konacha(mocha)でpoltergeist(phantomjs)が動かない
  5. capybara-webkitにcapybara2.xで動くバージョンが出る(0.14.0)
  6. capybara-webkit 0.14.0に上げる
  7. libqt4-devのバージョンが古くて(4.6)debian squeeze上でコンパイルできない
  8. debian wheezyに上げて、libqt4-devのバージョンを上げる(4.8)
  9. jenkins復活

長かった。

@hrysd

「ツールは甘え 本物の男は手書き」

などと言ってますが、俺も毎回ググってるからツール使いたいです。実際。

皆さんはiptablesどうやって設定してますか?

X無しでdebianで動くフロントエンドでおすすめあったら教えてもらえるとありがたいです!

These releases contain two extremely critical security fixes so please update IMMEDIATELY.ってあるので怖話のrailsを3.2.8から3.2.11にupdateしました。