2014-01-01から1ヶ月間の記事一覧

Alembic でデフォルト値を設定する

今までスキーマーの管理は普通に SQL ファイルで管理していた。 別に DDL を書くのは苦痛じゃないし分かり易いので良いんだけど、マイグレーションツールに Alembic を使ってみようと試している。 """Create users table. Revision ID: 197f6c68376 Revises:…

Autodo を decorator に依存するようにした

Python2.7 と Py.Test の組み合わせた場合に、examples にあるのが動かないと報告頂いた。 @pytest.fixture def setup(): setup = TestApp(create_app) return setup @autodoc.describe('POST /') def test_post(setup): res = setup.post_json('/', params=…

Autodoc 作った

Ruby の Autodoc や Perl の Test::JsonAPI::Autodoc を真似て Python の Autodoc を作った。 GitHub - heavenshell/py-autodoc: Autodoc Python implementation. # まだ PyPi にはアップしてないアップロードした。 もともと Jokk という Mock サーバを作っ…

Google 製の DI フレームワークの Pinject を試してみた

Google が作っている DI フレームワークに Pinject というのがあるのを知った。 Injector とどう違うのか試してみた。 詳しくは GitHub の Pinject のドキュメント参照。 # -*- coding: utf-8 -*- import pinject class Base(object): def save(self, path):…

Flask で Jinja2 に渡った context を確認したい

Flask の render_template() で Jinja2 にちゃんと context が渡ったかどうかテストしたい。 from flask import Blueprint, render_template app = Blueprint('index', __name__, url_prefix='/') @app.route('/') def index(): return render_template('ind…

factory_boy で遭遇したエラー

テストコードでテストデータを作る時に今までは以下のようにしてた。 from unittest import TestCase from models.user import User class TestUser(object): def setUp(self): self._init() def _init(): user = User(name='foo', password='pass') db_sess…

Python3.3 + SQLAlchemy + PyMySQL で発生したエラー

/tmp/python/virtualenvs/py3kproject/lib/python3.3/site-packages/pymysql/converters.py line 116 in convert_datetime if ' ' in obj: TypeError: Type str doesn't support the buffer APIってエラーが出た。 原因は SQLALCHEMY_DATABASE_URI = 'mysql+…

Vagrant で Ansible を動かす

Packer を使って box ファイルの作成が完了したので、ローカルの Mac に Vagrant を使って CentOS6.5 を起動させた。 Ansible はローカルの Mac に 1.4.3 をインストール。 Vagrant のネットワークは NAT でホストの Mac からは IP アドレスを直接うっても s…

Flask-Injector を使ってモックに差し替える

Injector を使って DI してるんだから、テストコードからも置き換えたいよねーってお話。 # Mock を使って差し替える事も出来る app.py # -*- coding: utf-8 -*- from flask import Flask from flask.ext.injector import init_app, post_init_app from bind…

Packer ではまる

Ansible を試そうと思って、構成管理するサーバをとりあえず Vagrant を使って建てようとした。 box ファイルをどうしようと悩んだが Packer を使って自分で作ってみる事にした。 0.5.0 で後方互換を無くす仕様変更があり、ハマったのでメモ。 # 典型的な Ya…

Flask-Injector で試したあれこれ

Flask-Injector を試してる時に、これはどうしたら良いんだろうというのがあったので、色々試してみた。 コンストラクタに引数を渡したい 色々試していて以下のようにコンストラクタに引数を受け取りたい場合はどうしたら良いのか試行錯誤した所、binds でイ…

Flask-Injector を試してみた

Python というか Flask でも DI コンテナ欲しいなーと思う事がある。 去年書いていたコードでは最初アップロードしたファイルの保存を Flask が動いているサーバのファイルシステムに保存していたが、後から RiakCS に保存するという仕様変更を行った。 こん…

Flask の拡張の Python3 対応

今年は本格的に Python3 に移行しようと重い腰を上げた。 まずは自作の Flask のプロジェクトジェネレータを Python3 対応にした。 Application factory 内で itereitems() を使っている所があったので、_compat.py を作りその中で iteritem をラップするも…