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 добавь герою [email protected]: play-twitter.git
Конфигурация heroku: добавить FRAMEWORK_ID = prod; Конфигурация heroku: добавить USE_PRECOMPILED = true
гит пуш герой мастер
Герои бревен
дополнения к Heroku: добавить базу данных
Вы можете посмотреть живую демонстрацию здесь , интерфейс администратора здесь или клонировать исходный код на Github .
Вуаля! Теперь иди играть !
Первоначально опубликовано на geeks.aretotally.in/twitter-playframework-heroku .