db = DAL('sqlite://heroku.test.sqlite')
isn't this problem related to the fact that trying to use a sqlite db on heroku is forbidden ? (read-only filesystem!) On Monday, December 3, 2012 6:00:26 PM UTC+1, Massimo Di Pierro wrote: > > Can you try run this: > > heroku addons:add heroku-postgresql:dev > > On Sunday, 2 December 2012 08:41:53 UTC-6, Joe Repka wrote: >> >> I tested with the welcome app. The script seems to work fine now. Web2py >> on Heroku opens in a browser after the script runs. >> >> However, there is still a database driver error: >> <type 'exceptions.RuntimeError'> Failure to connect, tried 5 times: >> Traceback (most recent call last): File "/app/gluon/dal.py", line 6825, in >> __init__ self._adapter = ADAPTERS[self._dbname](**kwargs) File >> "/app/gluon/dal.py", line 2094, in __init__ if do_connect: >> self.find_driver(adapter_args) File "/app/gluon/dal.py", line 709, in >> find_driver raise RuntimeError("no driver available %s" % >> str(self.drivers)) RuntimeError: no driver available ('sqlite2', 'sqlite3') >> >> 1. >> 2. >> 3. >> 4. >> 5. >> 6. >> 7. >> 8. >> 9. >> 10. >> 11. >> 12. >> 13. >> 14. >> 15. >> 16. >> 17. >> 18. >> 19. >> 20. >> >> Traceback (most recent call last): >> File "/app/gluon/restricted.py", line 212, in restricted >> exec ccode in environment >> File "/app/applications/welcome/models/db.py" >> <https://obscure-springs-6909.herokuapp.com/admin/default/edit/welcome/models/db.py>, >> line 15, in <module> >> db = get_db() >> File "/app/gluon/contrib/heroku.py", line 28, in get_db >> db = DAL('sqlite://heroku.test.sqlite') >> File "/app/gluon/dal.py", line 6844, in __init__ >> raise RuntimeError("Failure to connect, tried %d times:\n%s" % >> (attempts, tb)) >> RuntimeError: Failure to connect, tried 5 times: >> Traceback (most recent call last): >> File "/app/gluon/dal.py", line 6825, in __init__ >> self._adapter = ADAPTERS[self._dbname](**kwargs) >> File "/app/gluon/dal.py", line 2094, in __init__ >> if do_connect: self.find_driver(adapter_args) >> File "/app/gluon/dal.py", line 709, in find_driver >> raise RuntimeError("no driver available %s" % str(self.drivers)) >> RuntimeError: no driver available ('sqlite2', 'sqlite3') >> >> >> On Friday, November 30, 2012 6:34:15 AM UTC-8, Massimo Di Pierro wrote: >>> >>> You are right. There is a type in the script. I just fixed it in trunk. >>> The second issue is a bug in dal.py. I also just fixed that. Please check >>> again and let us know. >>> >>> On Thursday, 29 November 2012 14:46:40 UTC-6, Joe Repka wrote: >>>> >>>> pip install is not finding postgresql2 for me: >>>> >>>> "Could not find any downloads that satisfy the requirement postgresql2 >>>> No distributions at all found for postgresql2" >>>> >>>> I tried installing psycopg2 instead, but no love from that: >>>> >>>> "<type 'exceptions.RuntimeError'> Failure to connect, tried 5 times: >>>> Traceback (most recent call last): File "/app/gluon/dal.py", line 6825, in >>>> __init__ self._adapter = ADAPTERS[self._dbname](**kwargs) File >>>> "/app/gluon/dal.py", line 2094, in __init__ if do_connect: >>>> self.find_driver(adapter_args) File "/app/gluon/dal.py", line 709, in >>>> find_driver raise RuntimeError("no driver available %s" % self.drivers) >>>> TypeError: not all arguments converted during string formatting >>>> " >>>> >>>> >>>> On Thursday, November 29, 2012 7:41:45 AM UTC-8, Massimo Di Pierro >>>> wrote: >>>>> >>>>> FYI (from web2py-developers) >>>>> >>>>> >>>>> Hello everybody, >>>>> >>>>> At PyCon Argentina I met Craig Kerstiens from Heroku. He explained to >>>>> me how heroku works and we were able to make web2py work on heroku. >>>>> >>>>> This is still experimental and I will continue tweak it but you may >>>>> want to give it a try and share your suggestions for improvement: >>>>> >>>>> >>>>> HOWTO: >>>>> >>>>> 1) get a heroku account and SDK (it is all free) >>>>> >>>>> 2) download web2py from google code (not from github because you do >>>>> not want the .git folder) >>>>> >>>>> hg clone https://massimo.dipie...@code.google.com/p/web2py/ >>>>> >>>>> cd web2py >>>>> >>>>> 3) install your web2py apps >>>>> >>>>> 4) in each app, replace >>>>> >>>>> db=DAL(…) >>>>> >>>>> with >>>>> >>>>> from gluon.contrib.heroku import get_db >>>>> >>>>> >>>>> db = get_db() >>>>> >>>>> 5) from inside the web2py folder do (this create a git repo, if you >>>>> have one, delete it): >>>>> >>>>> scripts/setup-web2py-heroku.sh >>>>> >>>>> Now should have your apps running on heroku with postgresql. >>>>> >>>>> caveats: >>>>> >>>>> get_db() gives you a postgresql connection on heroku and stores >>>>> sessions, migrations , and uploads in postgres (one db for all apps). >>>>> When >>>>> running locally uses a heroku.test.sqlite database (one for each app). I >>>>> will post instructions so that each app gets its own database. Tickets >>>>> still go in file system and will be accessible via admin interface but >>>>> every 24hrs the file system is wiped out and tickets are lost. >>>>> >>>>> Admin is not in readonly mode but any change you do via admin will be >>>>> lost when the system is reset (every 24 hrs). So you should assume it is >>>>> readonly. >>>>> >>>>> Appadmin works fine. >>>>> >>>>> Is the DAL(…) -> get_db() replacement too much to ask to the users? We >>>>> could do it automatically under the hood once we detect heroku. What do >>>>> you >>>>> think? Using get_db gives more flexibility for tweaking, specifically >>>>> when >>>>> multiple databases are present. >>>>> >>>>> There are two files that need to be created (done by >>>>> setup-web2py-heroku.sh): requirements.txt and Procfile. We could ship >>>>> them >>>>> with web2py but people need to be able to configure them anyway. Should >>>>> we >>>>> ship them or let users create them? >>>>> >>>>> This should be even easier. People should be able to simply git commit >>>>> apps (with get_db) and pip install web2py. I do not know how to do it >>>>> because I do not understand distutil and git well enough yet. Perhaps >>>>> people should be able to git pull apps directly from the admin running on >>>>> heroku. >>>>> >>>>> >>>>> Massimo >>>>> >>>> --