- GAEの本番、いわゆるProduction
- GAEのサンドボックス
- web2pyの実行
web2pyの開発環境は至れり尽くせりでViewやControllerを直接実行したり、編集したり、トラップしたときのトレースも不自由なくできます。
わたしはデータベースは面倒なのでsqliteを使っています。SQLite Database Bowser(http://sqlitebrowser.sourceforge.net)などはほとんど必要としません。
全部 この開発環境で開発からデバッグができます。
しかし問題がない訳ではありません。
それは
複数のアプリケーションの間のシェアです。マニュアルにはいろいろ書いてありますが、(http://www.web2py.com/book/default/chapter/04?search=cooperation#Cooperation)私にとっては、一向に要領を得ません。アプリケーションの間でセッションを共有しようとしたいのですが、結局はデータベースが共有できればよいのです。
SQLiteを使うとファイルシステムにストレージができます。web2pyではアプリケーションの下のディレクトリ、databasesです。
シンボリックリンクを使ってシェアしようとしたのですが、うまく行きません。
ところがこの問題はGAEのサンドボックスではないのでした。
GAEのサンドボックス、dev_appserver.pyはGoogleのデータベース、Big Tableをシミュレートしてくれます。
こちらはファイルシステムが使えません。アプリケーションのdb.pyに次のようなラインがあります。ここでmynamespaceがデータベースの名前空間を指定しているようです。
あるアプリケーションで定義したテーブルを別のアプリケーションのdb.pyで定義しておいて、その名前空間が同じならば、そのテーブルを共有できます。
if request.env.web2py_runtime_gae: # if running on Google App Engine
db = DAL('gae://mynamespace') # connect to Google BigTable
session.connect(request, response, db=db, masterapp=None)
# and store sessions and tickets there
### or use the following lines to store sessions in Memcache
# from gluon.contrib.memdb import MEMDB
# from google.appengine.api.memcache import Client
# session.connect(request, response, db = MEMDB(Client()))
else: # else use a normal relational database
db = DAL('sqlite://storage.sqlite') # if not, use SQLite or other DB
データベースを覗くには、このURLでOKです。
http://localhost:8080/_ah/admin
要するにまとめると、
web2py ---> dev_appserver.py ---> appcfg.pyでアップロードすればよいということでした。
もうひとつ便利なこと。
web2pyはlocalhost:8000でリッスン、サンドボックスは8080でリッスンします。だからブラウザの上で8000を8080とするだけで同じファンクションを2つの環境で試験できます。これは便利でした。
もうひとつ便利なこと。
web2pyはlocalhost:8000でリッスン、サンドボックスは8080でリッスンします。だからブラウザの上で8000を8080とするだけで同じファンクションを2つの環境で試験できます。これは便利でした。
0 件のコメント:
コメントを投稿