Tag Archives: Postgres

A simple ORM for NodeJS

via Vincit/moron.js · GitHub.

Moron.js is a Node.js ORM built around the wonderful SQL query builder knex. All databases supported by knex are supported by moron.js. SQLite3, Postgres and MySQL are fully tested.

What moron.js gives you:

What moron.js doesn’t give you:

  • A custom query DSL. SQL is used everywhere
  • Automatic database schema creation and migration. It is useful for the simple things, but usually just gets in your way when doing anything non-trivial. Moron.js leaves the schema related things to you. knex has a great migration tool that we recommend for this job.

Postgres pushes past MySQL in developer hearts

via Postgres pushes past MySQL in developer hearts – TechRepublic.

Postgres has never been considered cool. Ever the ugly stepchild to MySQL, Postgres disciples were forced to watch MySQL trounce their beloved database in terms of popularity. Even though MySQL offered fewer features, Postgres was forced to play the uncool uncle while MySQL dominated adoption.

Until now.

As seen in recent startup hiring data, Postgres is now the de facto choice for early-stage startup developers looking for a strong relational database management system (RDBMS). The question is why?

Introduction to Data Modeling with JSData

via Introduction to Data Modeling with JSData.

Inspired by Ember Data, JSData is a framework-agnostic, storage-agnostic, in-memory data store.

JSData’s adapters handle communication with various storage layers, such as localStorage, Firebase, RethinkDB, or your RESTful backend.

In a typical scenario, you load data into the store, which maintains a single representation of every unique record coming from your storage layer. The data store offers an API for read, update, and delete operations, which are executed in your storage layer by an adapter, with the results finally synced back to the store. This is your Data or Model layer.

The Model layer is typically where your business logic resides–where you manipulate your data. There are many variations on this pattern, and JSData can work with your preferences.

JSData runs in the browser, communicating with storage layers such as localStorage, Firebase, your RESTful backend (HTTP target), etc.

JSData also runs in NodeJS, where adapters for MongoDB, Redis, RethinkDB, MySql/Postgres/SQLite, etc. are available.

JSData presents a uniform API for executing your typical CRUD operations against any storage layer for which an adapter is available. You can easily combine adapters for more complicated data management.

It is easy to add JSData to your project. Let’s get started:

A Ruby on Rails application that allows citizens to “adopt” civic infrastructure, such as fire hydrants.


Claim responsibility for shoveling out a fire hydrant after it snows.




You can see a running version of the application at http://adopt-a-hydrant.herokuapp.com/.


This application requires Postgres to be installed

git clone git://github.com/codeforamerica/adopt-a-hydrant.git
cd adopt-a-hydrant
bundle install

bundle exec rake db:create
bundle exec rake db:schema:load


rails server

Seed Data

bundle exec rake db:seed

Deploying to Heroku

A successful deployment to Heroku requires a few setup steps:

  1. Generate a new secret token:
    rake secret
  2. Set the token on Heroku:
    heroku config:set SECRET_TOKEN=the_token_you_generated
  3. Precompile your assets
    RAILS_ENV=production bundle exec rake assets:precompile
    git add public/assets
    git commit -m "vendor compiled assets"
  4. Add a production database to config/database.yml
  5. Seed the production db:

    heroku run bundle exec rake db:seed

Keep in mind that the Heroku free Postgres plan only allows up to 10,000 rows, so if your city has more than 10,000 fire hydrants (or other thing to be adopted), you will need to upgrade to the $9/month plan.

Google Analytics

If you have a Google Analytics account you want to use to track visits to your deployment of this app, just set your ID and your domain name as environment variables:

heroku config:set GOOGLE_ANALYTICS_ID=your_id
heroku config:set GOOGLE_ANALYTICS_DOMAIN=your_domain_name

An example ID is UA-12345678-9, and an example domain is adoptahydrant.org.


In the spirit of free software, everyone is encouraged to help improve this project.

Here are some ways you can contribute:

  • by using alpha, beta, and prerelease versions
  • by reporting bugs
  • by suggesting new features
  • by translating to a new language
  • by writing or editing documentation
  • by writing specifications
  • by writing code (no patch is too small: fix typos, add comments, clean up inconsistent whitespace)
  • by refactoring code
  • by closing issues
  • by reviewing patches
  • financially

Submitting an Issue

We use the GitHub issue tracker to track bugs and features. Before submitting a bug report or feature request, check to make sure it hasn’t already been submitted. When submitting a bug report, please include a Gist that includes a stack trace and any details that may be necessary to reproduce the bug, including your gem version, Ruby version, and operating system. Ideally, a bug report should include a pull request with failing specs.

Submitting a Pull Request

  1. Fork the repository.
  2. Create a topic branch.
  3. Add specs for your unimplemented feature or bug fix.
  4. Run bundle exec rake test. If your specs pass, return to step 3.
  5. Implement your feature or bug fix.
  6. Run bundle exec rake test. If your specs fail, return to step 5.
  7. Run open coverage/index.html. If your changes are not completely covered by your tests, return to step 3.
  8. Add, commit, and push your changes.
  9. Submit a pull request.

Supported Ruby Version

This library aims to support and is tested against Ruby version 2.1.2.

If something doesn’t work on this version, it should be considered a bug.

This library may inadvertently work (or seem to work) on other Ruby implementations, however support will only be provided for the version above.

If you would like this library to support another Ruby version, you may volunteer to be a maintainer. Being a maintainer entails making sure all tests run and pass on that implementation. When something breaks on your implementation, you will be personally responsible for providing patches in a timely fashion. If critical issues for a particular implementation exist at the time of a major release, support for that Ruby version may be dropped.


Copyright (c) 2014 Code for America. See LICENSE for details.

Code for America Tracker

Full WebApplication JSF EJB JPA JAAS

Full Web Application JSF EJB JPA JAAS

This post will be the biggest so far in my blog! We will see a full web application. It will be done will the newest technologies (until today), but I will give some hints to show how to adapt this post to older technologies.

In the end of this post you will find the source code to download. You can use it as you wish. Just go to the last page and do the download. \o/

If you downloaded the code and did not understand something, in this post I will explain every detail found in the code. Just read the subject inside this post that you want.

I will list bellow the technologies that I will use in this post:

  • JSF 2.0 Mojarra – With ManagedBeans as RequestScope and SessionScope.
  • Message Internationalization – File that will have all the messages of our system; it will be easier to translate you pages.
  • Default CSS file that will be imported as a library.
  • EJB 3 – Our DAOs and Façades will be @Stateless.
  • Generic DAO – A generic DAO that will have the CRUD actions to make our life easier.
  • JPA 2 – To map our classes in the DB
  • JAAS – To control the login and the user access to the pages.
  • MVC – I will use this pattern with small modifications.
  • Postgres as database, but I will show how to set up your app to MySQL also.