1. hanoopy

    No comment

    hanoopy
Changes in body
Source | HTML | Preview
@@ -1,131 +1,131 @@
#cronはGoogleAppsScriptで
GoogleAppsScriptというツールから、定期実行スクリプトを登録できる。スクリプトは.gsというJavaScriptっぽいやつ。
[無料でお手軽Cron!Google Apps Scriptを使ってみる。](http://kijtra.com/article/cron-by-google-apps-script/)
ほぼこのサイトの通りで、URLをfetch実行させて、戻り値(ブラウザ出力内容)をメール送信する。
URLのページが404とかでもcronエラーにならないように、引数 **muteHttpExceptions**を追加した。こうすると、404なら404のページ内容が返ってくる。
普通に管理画面があって、日時とか繰り返しを設定できる。
```javascript:script.gs
function myFunction() {
var response = UrlFetchApp.fetch("https://heroku-appli-9090.herokuapp.com/-cont-/-view-"
, { muteHttpExceptions:true });
MailApp.sendEmail(
"-my-mail-address-@gmail.com",// 送信先メール
"Cronの実行結果ですよ",// メール件名
"",
{
htmlBody: response.getContentText()
}
);
}
```
#herokuでWebアプリ作成
上記cronでURLを呼び出せるように、herokuでプロジェクトを作る。
参考にしたサイトはこことか。
[Heroku に Rails アプリをアップ](http://railsgirls.jp/heroku/)
herokuのチュートリアルだけでも十分できる。はずだが、いろいろはまった。
> % foreman start web
-でローカル実行できるようにしておく。(http://localhost:5000)
-herokuのチュートリアルに載ってた。
+Webサーバー上のアプリをローカル実行できるようにしておく。(デフォルトのポート番号だと、http://localhost:5000で見られる)
+このやり方は、herokuのチュートリアルに載ってた。
[Run the app locally](https://devcenter.heroku.com/articles/getting-started-with-ruby#run-the-app-locally)
ローカルで試してから、`git push heroku master`して本番で見る。
#RubyonRailsで、ツイートするプログラム作成
> % rails new app-name --skip-active-record
でrailsプロジェクトを作り、そこに入ってからremoteのherokuにプッシュできるようにしておく。
-「--skip-active-record」DBを使わないRailsプロジェクトを作成するための引数。
+「--skip-active-record」DBを使わないRailsプロジェクトを作成するための引数。
([DB不要のRailsアプリの作り方](http://qiita.com/h7kayama/items/8b0870716777494f8c31))
> % rails generate controller tweet-blog-update tweet
でコントローラとビューを作成。
```ruby:TweetBlogUpdateController.rb
require "twitter"
require "simple-rss"
require "open-uri"
class TweetBlogUpdateController < ApplicationController
def post
title = self.getTitle()
if title != "-" then
self._post(title)
end
render :text=> title
end
def _post(title)
client = Twitter::REST::Client.new do |config|
config.consumer_key = "--your consumer key--"
config.consumer_secret = "--your consumer secret--"
config.access_token = "--token---"
config.access_token_secret = "--token secret--"
end
message = "blog update \"#{title}\" http://--blog-url--"
client.update(message)
end
def getTitle()
filename = 'http://フィードURL'
rss = SimpleRSS.parse open(filename)
# 記事タイトルを取得
title = rss.items[0].title
# 最終更新日時を取得
lastUpdate = rss.items[0].published
# 本日0時0分の日時オブジェクトを作成
tyear = Time.now().year
tmonth = Time.now().month
tday = Time.now().day
dayStart = Time.local(tyear, tmonth, tday, 0, 0, 0)
- # 本日の記事があればツイート
+ # 本日の記事があればツイート(なければツイートしない。その場合はハイフンのみをメールする)
if lastUpdate - dayStart <= 0 then
title = "-"
end
return title
end
end
```
-* requireしているうちでは、twitterとsimple-rssはGemfileに記載が必要であった。
+* requireしているライブラリの内、twitterとsimple-rssはGemfileに記載が必要であった。
> gem 'twitter'
> gem 'simple-rss'
参考にしたのはこちらとか。[simple-rssメモ](http://d.hatena.ne.jp/cuspos/20080123/1201066236)
-最初rubyで作ってて、rssっていうライブラリだったんだけど、それはgemがなかったので、simple-rssになった。
+最初はRails無しのrubyで作ってて、「rss」っていうライブラリだったんだけど、それはgemがなかったので、simple-rss」に変えた。
-* getTitleメソッドでは、フィードの1件目のタイトルと日時を取得する。1件目の記事投稿時間が本日の0時0分より後であれば(=本日投稿の記事があれば)、タイトルを返す。無ければハイフンを返す。
+* getTitleメソッドでは、RSSフィードの1件目のタイトルと日時を取得する。1件目の記事投稿時間が本日の0時0分より後であれば(=本日投稿の記事があれば)、タイトルを返す。無ければハイフンを返す。
-* postメソッドでは、getTitleで取得したタイトルがハイフンでなければ、_postメソッドにツイートさせる。タイトルブラウザに出力する(=cronでのメール内容になる)
+* postメソッドでは、getTitleで取得したタイトルがハイフンでなければ、_postメソッドにツイートさせる。タイトルブラウザに出力する(=cronでのメール内容になる)
* コンシューマーキーとアクセストークンはこちらで取得する。
[Twitter Application Management](https://apps.twitter.com/)
# その他
* herokuでもschdulerというアドオンでタスク実行(cron)できるらしい。それを使おうと思ったのだけど、カード登録が必要になる。カード登録しようと思ったら、そんなはずはないと思うんだけど、支払いページが表示できなかった。
![billingページ](http://i.gyazo.com/1112f2e7e3639158dd2e48cc8c9b4dbb.png)
?????
* herokuアプリを作って最初のpushで、エラーになった。これはシンプルなディレクトリをあげようとすると、PHPのアプリ(Framework:PHP)として登録されてしまい、その場合はindex.phpがないとエラーになるみたい。index.phpをルートに置くと解消されると言う謎仕様。
[Heroku push rejected, no Cedar-supported app detected](http://stackoverflow.com/questions/8361475/heroku-push-rejected-no-cedar-supported-app-detected)
[herokuにただのWebページを乗せてみる](http://d.hatena.ne.jp/softsama/20120715/1342373494)
>
index.phpがないと怒られる。エラーメッセージからは推測不可能な所がキモい。