alephant
Static publishing to S3 on push notification from SQS
Dependencies
- JRuby 1.7.8
- An AWS account (you'll need to create):
- An S3 bucket
- An SQS Queue (if no sequence id provided then
sequence_idwill be used) - A Dynamo DB table (optional, will attempt to create if can't be found)
Setup
Ensure you have a config/aws.yml in the format:
access_key_id: ACCESS_KEY_ID
secret_access_key: SECRET_ACCESS_KEY
Install the gem:
gem install alephant
In your application:
require 'alephant'
opts = {
:s3_bucket_id => 'bucket-id',
:s3_object_path => 'path/to/object',
:s3_object_id => 'object_id',
:table_name => 'your_dynamo_db_table',
:sqs_queue_id => 'https://your_amazon_sqs_queue_url',
:sequential_proc => Proc.new { |last_seen_id, data|
last_seen_id < data["sequence_id"].to_i
},
:set_last_seen_proc => Proc.new { |data|
data["sequence_id"].to_i
}
}
logger = Logger.new
thread = Alephant::Alephant.new(opts, logger).run!
thread.join
logger is optional, and must confirm to the Ruby standard logger interface
Provide a view in a folder (fixtures are optional):
└── views
├── models
│ └── foo.rb
├── fixtures
│ └── foo.json
└── templates
└── foo.mustache
SQS Message Format
{
"content": "hello world",
"sequential_id": 1
}
foo.rb
module MyApp
module Views
class Foo < Alephant::Views::Base
def content
@data['content']
end
end
end
end
foo.mustache
{{content}}
S3 Output
hello world
Preview Server
alephant preview
The included preview server allows you to see the html generated by your templates, both standalone and in the context of a page.
Standalone
/component/:id/?:fixture?
Full page preview
When viewing the component in the context of a page, you'll need to retrieve a mustache template to provide the page context.
When performing an update a regex is applied to replace the static hostnames in the retrieved html.
Environment Variables
STATIC_HOST_REGEX="static.(sandbox.dev|int|test|stage|live).yourapp(i)?.com\/"
PREVIEW_TEMPLATE_URL="http://yourapp.com/template"
Example Remote Template
id is the component/folder name
template is the mustache template file name
location_in_page should be something like (for example) page_head (specified within a preview.mustache file that the consuming application needs to create).
http://localhost:4567/component/id/templatehttp://localhost:4567/preview/id/template/location_in_page
alephant update
In page
/preview/:id/:region/?:fixture?
Build the gem locally
If you want to test a modified version of the gem within your application without publishing it then you can follow these steps...
gem uninstall alephantgem build alephant.gemspec(this will report the file generated which you reference in the next command)gem install ./alephant-0.0.9.1-java.gem



