31 августа 2011 года: я буду иметь большую честь представить нашу любимую Play Framework на конференции Salesforce Dreamforce здесь, в Сан-Франциско, штат Калифорния. Если вы участвуете, пожалуйста, не стесняйтесь проверить это или просто зайти, чтобы поздороваться. Спасибо
Zenexity за предоставленную возможность! Я всегда рад помочь распространить информацию об этой удивительной структуре!
Итак, большое объявление вышло — Heroku начала предлагать встроенную поддержку приложений Play Framework! Если вы этого не слышали, ознакомьтесь с постом Джеспера Йоргенсена в блоге Heroku.
Итак, для презентации я настраиваю очень простой клон Twitter; это должно быть просто, но в то же время отображает достаточно производительности, что Play! обеспечивает. Я собираюсь пройти шаги по настройке демо-приложения, которое должно охватывать то, что было объявлено в блоге Heroku, но с чуть большей глубиной.
играть в новый твиттер
— играть -> груда
игровые зависимости
играть в eclipsify (для Eclipse), играть в идеализировать (для IntelliJ) или играть в netbeansify (для Netbeans).
package models;
import java.util.Date;
import java.util.List;
import javax.persistence.Entity;
import play.data.validation.MaxSize;
import play.data.validation.Required;
import play.db.jpa.Model;
@Entity
public class Tweet extends Model {
@Required
@MaxSize(140)
public String tweet;
@Required
public Date createDate = new Date();
public static List findLatest() {
return Tweet.find("order by createDate desc").fetch();
}
@Override
public String toString() {
return this.tweet;
}
}
дб = $ {DATABASE_URL}
package controllers;
import java.util.List;
import models.Tweet;
import play.mvc.Controller;
public class Application extends Controller {
public static void index() {
List tweets = Tweet.findLatest();
render(tweets);
}
public static void create(String msg) {
Tweet tweet = new Tweet();
tweet.tweet = msg;
tweet.save();
render(tweet);
}
public static void tweets() {
List tweets = Tweet.findLatest();
renderJSON(tweets);
}
}
#{extends 'main.html' /}
#{set title:'Home' /}
<!-- Create Tweet Form -->
<form> <input name="tweet" type="text" />
<input type="submit" value="Tweet" /> </form><!-- Latest Tweets List -->
<ul> #{list tweets}
<li>${_.tweet} (${_.createDate.since()})</li><p><p>
#{/list}</ul>
<!-- JS -->
<script type="text/javascript">
// Capture Form Submit Event
$('form').submit(function() {
// Define Create Action
var createAction = #{jsAction @create(':tweet') /}
// Call Create Action
$.post(createAction({tweet: $('input:first').val()}), function(data) {
// Prepend Results to the List
$('ul').prepend(data);
$('input:first').val('');
});
// Don't let the browser redirect
return false;
});
</script>
<!-- Single Item Render (after save action) -->
<li><code>${tweet.tweet} (${tweet.createDate.since()})</li>
import models.Tweet;
import org.junit.Assert;
import org.junit.Test;
import play.test.UnitTest;
public class TweetTest extends UnitTest {
@Test
public void testModelSave() {
long count = Tweet.count();
Tweet t = new Tweet();
t.tweet = "my sample tweet";
t.save();
long count2 = Tweet.count();
Assert.assertEquals(count + 1, count2);
}
}
package controllers;
public class Tweets extends CRUD {
}
* / модуль администратора: crud
tweet = Tweet
createDate = Дата создания
web: play run -% $ FRAMEWORK_ID —http.port = $ PORT -DusePrecompiled = $ USE_PRECOMPILED -DDATABASE_URL = mem
запустить игру -% dev -DusePrecompiled = false -DDATABASE_URL = mem
Heroku создать Play-Twitter — стека кедра
git init; git add.; git commit -a -m «Начальный коммит»; git remote добавь герою git@heroku.com: play-twitter.git
Конфигурация heroku: добавить FRAMEWORK_ID = prod; Конфигурация heroku: добавить USE_PRECOMPILED = true
гит пуш герой мастер
Герои бревен
дополнения к Heroku: добавить базу данных
Вы можете посмотреть живую демонстрацию здесь , интерфейс администратора здесь или клонировать исходный код на Github .
Вуаля! Теперь иди играть !
Первоначально опубликовано на geeks.aretotally.in/twitter-playframework-heroku .