「LINEで送る」ボタンのURL指定や改行処理

LINEで送る設置で調べた内容のメモ

https://media.line.me/howto/ja/

送るURLは常に固定しておきたい事情があったのでwithUrl:falseを追加してtextからテキストとURLを指定します。

<script type="text/javascript" src="//media.line.me/js/line-button.js?v=20140411" ></script>
<script type="text/javascript">
new media_line_me.LineButton({"pc":false,"lang":"ja","type":"a", "text":"テキスト 送りたいURL", "withUrl":false});
</script>

でも・・改行がわからなかった。

テキスト(改行)
送りたいURL

こんな感じにする場合、とりあえずJSでの生成を飛ばしてハードコードしたら改行は使えたけど・・すっきりしない。

<a href="//line.me/R/msg/text/?テキスト + '%0D%0A' + 送りたいURL">
    <img src="//media.line.me/img/button/ja/82x20.png" width="82" height="20" alt="LINEで送る">
</a>

HerokuでMiddleman

Google Analyticsの挙動で検証したい箇所があったので、Middlemanで適当なコードを書いてローカルで動作確認をしていた。 結局公開した状態でのテストもしたくなったので、次回から悩まないようにログ。

1.middlemanのインストール

# MiddlemanのGemを追加
$ gem install middleman
〜〜

$ middleman init プロジェクト名(ディレクトリ名)
〜〜
Do you want a Rack-compatible config.ru file?
# config.ruファイルを利用するので y でエンター
〜〜

2.Gemを追加

gem 'puma'
gem 'rack-contrib'

3.config.ru書き換える

require 'rack'
require 'rack/contrib/try_static'

# Build static files when booting
`bundle exec middleman build`

use Rack::TryStatic,
    :root => 'build',
    :urls => %w[/],
    :try => ['.html', 'index.html', '/index.html']

4.Procfile追加する

web: bundle exec middleman build && middleman server -p $PORT

5.Git〜デプロイ

# Git用意して
$ git init
$ git add .
$ git commit -m 'initial commit'

# アプリ作って
$ heroku create アプリ名

# デプロイ
$ git push heroku master
$ heroku open #ブラウザで確認

とりあえず動くとこまでザーっと書きました。

Heroku MySqlのIdが飛ぶ

課金祭りで思わず落としたアプリケーションを立ち上げ直した際に、DB確認してたらIdが 1, 11, 22, 33,44,,と不気味な上がり方をしていた。
書き方悪くて何か変なループに入って、1回の保存で10回くらい処理走っちゃったりしてるのか・・とか思ったら仕様みたいです。

When I use auto_increment keys (or sequences) in my database, they increment by 10 with varying offsets. Why?

ClearDB Developer Center - Frequently Asked Questions

qiita.com

Google Analyticsに「Storage not available」と言われた

Google Tag Managerを使ってGoogle Analyticsの動作確認をしてたら、consoleにStorage not availableと出て、ビーコンが送られなくなってしまった。

今までたまたま遭遇しなかったけど、Localhostでテストする際はcookieDomainをnoneにするそうな。

f:id:hhmmm:20160222215746p:plain

本番公開時は消した方がいいのかな?

Heroku課金祭り

昨日18日(木)の18:20頃
Herokuから「You have spent money」というメールが来た。
MySql使うためにクレジットカード登録はしっかりしていたので「おっと・・止めとこう」と思ってBillingページ行ったら $1,253.45も使ってた。

思わず閉じてしまったので、深呼吸してもう一度開いたけどやっぱり$1,253.45。

仕事中だったけどそっちのけで「heroku 溶かした 返金」等、やっちゃった人の記事を探しまくること10分ほど。
Twitterでも同様な人がゾロゾロと出てきてあっという間に解決されました。

今日の夕方頃には無事$0に戻ってるのが確認できました。 f:id:hhmmm:20160219204232p:plain

・・いやぁ本気で焦りました。

Heroku ClearDBにSequel Proから接続する

前回作った後にSequel Proから繋ぎたかったのでメモ。

$ heroku config --app アプリケーション名
=== アプリ名 Config Vars
CLEARDB_DATABASE_URL: mysql://ユーザー名:パスワード@ホスト/データベース?reconnect=true
〜〜〜〜

CLEARDB_DATABASE_URLの中身に必要な情報が入っているので、バラしてそれぞれに入れて接続する!

f:id:hhmmm:20160215204543p:plain

HerokuでRails4+MySql

ProgateRailsのお勉強も後半まで来たので、簡単でいいのでHerokuにデプロイをしてみたログです。

環境

OSX 10.11.2 (El Capitan)
Ruby 2.2.2
Rails 4.2.5.1

1. Herokuの設定

アカウント作成と設定だけは前にやってしまってたので・・内容覚えてなくて省略。

Herokuでアカウント作って、コマンドラインツール(Heroku toolbelt)もインストールします。

2. Railsアプリケーションの作成

MySQLを使いたいので--database=mysqlで作成。

$ rails new ./ --database=mysql --skip-bundle --skip-test-unit

Rubyのバージョン指定とHeroku利用時のおまじないをGemfileに追記。

ruby '2.2.2'

〜〜

group :production do
  gem 'rails_12factor'
end

Bundlerでインストール

$ bundle install

動作確認のために適当なscaffoldする。

$ rails g scaffold User name:string

DBの準備。

$ rake db:create
$ rake db:migrate

とりあえずローカルで走るようになりました。

$ rails s
# 動作確認できたら ctrl+cで止める

3. Gitに登録

初期化してコミット。

$ git init
$ git add .
$ git commit -m 'initial commit'

4. Herokuアプリケーションの作成

MySqlのAdd-ons利用にはクレジットカード登録が必要なので、事前にBillingページから登録します。
(カード登録はしますがフリープランを使います)

登録が終わったHerokuアプリケーションを作ります。

$ heroku create アプリ名

Add-ons(ClearDB)を追加します。

$ heroku addons:create cleardb:ignite
# igniteがフリープランです。

Railsに合わせてドライバを変更。

$ heroku config
CLEARDB_DATABASE_URL: mysql://ユーザー名:パスワード@ホスト/データベース名?reconnect=true

# mysqlをmysql2に変更してセット
$ heroku config:set DATABASE_URL='mysql2://ユーザー名:パスワード@ホスト/データベース名?reconnect=true'

5. デプロイ

$ git push heroku master

Heroku側のDB準備も忘れずに。

$ heroku run rake db:migrate

6. 公開されたアプリケーションの確認

最後にデプロイしたアプリケーションをブラウザで確認します。

$ heroku open

*indexページが無いのでエラーが出ると思いますので、scaffoldしたuser/で確認します。