【Rails】Heroku + Rails + Sendgridでメール送信ができない
どうもてぃです。
今回のことで3日ほど時間を溶かしました。
同じようなことではまってる人が見当たらなかったので、記事にします。
環境
以下僕がやった設定を書きます。
公式ドキュメントの設定
Heroku公式のドキュメント通りにやっていきました。
ドキュメント通りです。まじで。
今回はstaging環境を作成し、Herokuへあげました。
設定はproductionをまるまるコピーしてconfig/environments/staging.rb
を作成し、上記ドキュメント通りにやった感じです。
config.action_mailer.delivery_method = :smtp config.action_mailer.perform_deliveries = true config.action_mailer.smtp_settings = { user_name: ENV['SENDGRID_USERNAME'], password: ENV['SENDGRID_PASSWORD'], domain: 'yourdomain.com', address: 'smtp.sendgrid.net', port: 587, authentication: :plain, enable_starttls_auto: true }
↑をぶち込んだだけ。
Heroku環境変数の設定
Herokuの環境変数はheroku config
で確認できます。
=== Config Vars DATABASE_URL: <database url> HEROKU_POSTGRESQL_NAVY_URL: <navy postgresql url> LANG: en_US.UTF-8 RACK_ENV: staging RAILS_ENV: staging RAILS_LOG_TO_STDOUT: enabled RAILS_SERVE_STATIC_FILES: enabled SECRET_KEY_BASE: <your secret key> SENDGRID_PASSWORD: <your sendgrid password> SENDGRID_USERNAME: <your sendgrid username>
もしくは、 ダッシュボード Settings
配下の Config Vars
の「Reveal Config Vars」で確認することが出来ます。
RACK_ENV
と RAILS_ENV
をstaging
へ、SENDGRID_PASSWORD
と SENDGRID_USERNAME
は heroku addons:add sendgrid:starter
をやった際に自動的に設定されます。
ます
ここで足りないのは、 SENDGRID_API_KEY
。
Sendgridの画面から生成して設定をします。
$ heroku addons:open sendgrid
でブラウザとともに、Sendgridのダッシュボードが開きます。
開いたら、 Settings -> API Keys
を開き、 Create API Key
をクリック。
適当なAPI Key Name
を設定し、アクセスはFull Access
へ(プロジェクトに応じて変更してください)。
Create & View
をクリックすると、以下のような画面でkeyが表示されます。
黒く塗りつぶしているところをクリックするとコピーされるので、これをターミナル上からHerokuの環境変数に設定します。
$ heroku config:set SENDGRID_API_KEY='さっきコピーしたKey'
以上、必要な設定は終わり。
これで、適当なところでActionMailer
を動かせばいい。
メールが届かない
書いてる通りに設定を行って、いろんな記事を渡り歩いたんですが、メールが送信できない。
というよりも、メール送信はできているけど、Sendgrid経由でメールが送信できていないようでした。
ローカルから実際にSendgrid経由でメールを送ってみたコードが以下(公式に書いてるのと同じ)。
gemの dotenv
で.env
を設定し、実際に動かしたのですが、Sendgrid経由でメール送信できている。
SendgridのダッシュボードのActivity
にも表示されている。API Keyに問題があるわけではなさそう。
次にheroku run rails c
で実際にActionMailer
でメールを送信してみましたが、コンソール上にはメール送信が完了したとのログしか残らない。
エラーも表示されない。。。 どうしたものか。
設定を見なおした
trelloを見なおしていたら、config/environments/staging.rb
がなかった時に別でメール設定を行っていたことが発覚しました。
それが、 config/initializers/mail.rb
、こいつ。
if Rails.env.production? ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.smtp_settings = { address: 'smtp.gmail.com', domain: 'gmail.com', port: 587, user_name: ENV['MAIL_ADDRESS'], password: ENV['MAIL_PASSWORD'], authentication: 'plain', enable_starttls_auto: true, } elsif Rails.env.development? ActionMailer::Base.delivery_method = :letter_opener else ActionMailer::Base.delivery_method = :test end
config/environments/staging.rb
にメールの設定を書いているのですが、実際にメールが送られるときにはinitializers
配下が実行されるようで、何も設定していなかった僕はstaging
環境ではすべてtest環境が動くようになっていたのです。
こりゃあ、全部Sendgrid経由でメールが送れないわけですわ。
ということで、config/initializers/mail.rb
へHeroku用にstagingの設定を書き込みました。
if Rails.env.production? ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.smtp_settings = { address: 'smtp.gmail.com', domain: 'gmail.com', port: 587, user_name: ENV['MAIL_ADDRESS'], password: ENV['MAIL_PASSWORD'], authentication: 'plain', enable_starttls_auto: true, } elsif Rails.env.development? ActionMailer::Base.delivery_method = :letter_opener elsif Rails.env.staging? ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.default_url_options = { host: 'yourhost.com' } ActionMailer::Base.perform_deliveries = true ActionMailer::Base.smtp_settings = { user_name: ENV['SENDGRID_USERNAME'], password: ENV['SENDGRID_PASSWORD'], domain: 'herokuapp.com', address: 'smtp.sendgrid.net', port: 587, authentication: :plain, enable_starttls_auto: true } else ActionMailer::Base.delivery_method = :test end
解決
ちょうどGitHubが落ちてしまって、この設定のプルリクがマージできなかったのですが、今朝障害が直ったようでして、僕の方の障害も一緒に直りました。
さすがGitHub様様です。
elementaryOS(Ubuntu 16.04.5 LTS)でUSキーボードを使うと幸せになれる
どうもてぃです。
プログラマーたるもの、やはりUSキーボードでしょう。
経緯としては、やっぱりmacのようなトラックパッドを実現するのは、他社のPCでは厳しいというのと、せっかくならUSにしてみようと言う好奇心から買ってみました。
以下、現PCへの苦情まとめ。
- タイピングをしていると、トラックパッドに手のひらが当たって入力できない
ctrl + t
を押して新規タブを作成すると高確率でフォームにカーソルが行かない- 移動が思ったように行かない
- キー配列がゴミ(一番右になんかおる)
- やっぱり押し心地が悪い
etc...
とまあ、上げればキリが無いですが、毎日使うものなのでストレスはそれなりにたまります。
お金に余裕が出てきたので、とりあえずUSキーボード入門として安いやつ買ってみました。
ThinkPadのキーボード
いいですよね。
サブ機でちょっと前にThinkPad X280
を使ってたのですが、赤◯首とキーの押し心地が凄い良い。
という思い出があったので、ThinkPadのキーボードを買いました。
これ。
飽食なのでアフィリリンク貼っときます。
bluetoothにしなかったのは、レビューにも合ったのですが、遅延のせいで制御があまりうまく行かなかったりするそうなので今回は見送りました。
援助していただいているスーパーエンジニアの方がHHKBを有線で使っていたのもあってそれに倣いました。
コードが邪魔なので、これも買いました。
ちょっと長くて、向きをミスりましたがいまのところ満足。不便なら買い換えます。
設定
ibuz-mozc
とfcitx
で設定しました。
始めは以下の記事を参考に設定。
ただ、なぜか上の記事の「Mozcのキー設定変更」以下をやってみても、ctrl + space
だと文字切り替えがうまく行かず。。。
独自のやり方で設定しました。
上の記事の「キーボードレイアウト変更」までやった状態です。
まず、左上のアプリケーションから「アプリの検索」で「Fcitx 設定」を開く。
次にタブで「全体の設定」へ行き、入力メソッドのオンオフ
を設定する。
僕の場合、スペース右のAlt
で変更できるようにしました。
macっぽく。
これだけで一旦設定は終了です。
ただ、これだと、US -> Mozc -> USと行くと、右上の表記はUSなのに、実際に打つ文字はJISになっているという現象が起きます。
なので、Mozcを解除した際に、USへ切り替えるように設定します(これ以外にも、キーボードレイアウトの状態を修正しても直らなかった)。
上タブの「入力メソッド」へ行き、左下の+
を押下。
セレクトボックスの一番下にUSがあるので選択してOK。
この状態になったら、必要なくなったキーボード - 日本語
を選択して、-
で削除する。
最後にキーボード - 英語(US)
を選択して、↑
で優先順位を上げる。
これで完了。
超快適
あとは外付けキーボードを接続した際に、内蔵キーボードを無効化する設定をしたら終了なのですが、時間がかかりそうなのでまた今度やる。
めっちゃ快適ですー^^
壊れたらHHKB買います。
【Linux】Ubuntuにheroku CLIがインストールできない
段々と寒くなってきましたね。
どうもてぃです。
macだと簡単なheroku cli
の導入に手こずりました。
環境
- Ubuntu 16.04.5 LTS
- elementary OS 0.4.1 Loki
現象
テスト環境でわりかしデプロイが簡単で多用されるheroku
。
デプロイコストが少なかったので使おうと思ったのですが、ubuntuでこんなにハマるとは思ってもみなかったですね。
公式ページを参考にやってみました。
$ wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh This script requires superuser access to install apt packages. You will be prompted for your password by sudo. [sudo] user のパスワード: + dpkg -s apt-transport-https + echo deb https://cli-assets.heroku.com/apt ./ + dpkg -s heroku-toolbelt + true + curl https://cli-assets.heroku.com/apt/release.key + apt-key add - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1737 100 1737 0 0 9819 0 --:--:-- --:--:-- --:--:-- 9869 OK + apt-get update 無視:1 http://dl.google.com/linux/chrome/deb stable InRelease 取得:2 https://dl.yarnpkg.com/debian stable InRelease [13.3 kB] 取得:3 https://dl.winehq.org/wine-builds/ubuntu xenial InRelease [4,701 B] 取得:4 https://download.docker.com/linux/ubuntu zesty InRelease [49.8 kB] 取得:5 http://packages.elementary.io/appcenter xenial InRelease [6,128 B] 取得:6 https://dl.yarnpkg.com/debian stable/main amd64 Packages [7,905 B] 取得:7 https://dl.yarnpkg.com/debian stable/main i386 Packages [7,905 B] 取得:8 https://dl.yarnpkg.com/debian stable/main all Packages [7,905 B] 取得:9 https://dl.winehq.org/wine-builds/ubuntu xenial/main amd64 Packages [43.3 kB] 取得:10 https://cli-assets.heroku.com/apt ./ InRelease [2,533 B] 取得:11 http://dl.google.com/linux/chrome/deb stable Release [1,189 B] 取得:12 https://download.docker.com/linux/ubuntu zesty/stable amd64 Packages [2,477 B] 取得:13 http://dl.google.com/linux/chrome/deb stable Release.gpg [819 B] 取得:14 https://cli-assets.heroku.com/apt ./ Packages [620 B] 取得:15 http://packages.elementary.io/appcenter xenial/main amd64 Packages [78.3 kB] 取得:16 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB] 取得:17 http://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,381 B] 取得:18 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial InRelease [17.5 kB] 取得:19 http://packages.elementary.io/appcenter xenial/main i386 Packages [614 B] 取得:20 http://packages.elementary.io/appcenter xenial/main amd64 DEP-11 Metadata [83.4 kB] 取得:21 http://packages.elementary.io/appcenter xenial/main DEP-11 64x64 Icons [289 kB] 取得:22 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB] 無視:23 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial InRelease 取得:24 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB] 取得:25 http://archive.ubuntu.com/ubuntu xenial-security InRelease [107 kB] 取得:26 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial InRelease [23.8 kB] 取得:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1,201 kB] 取得:28 http://archive.ubuntu.com/ubuntu xenial/main Translation-ja [290 kB] 取得:29 http://ppa.launchpad.net/philip.scott/elementary-tweaks/ubuntu xenial InRelease [18.1 kB] 取得:30 http://archive.ubuntu.com/ubuntu xenial/main Translation-en [568 kB] 取得:31 http://archive.ubuntu.com/ubuntu xenial/main amd64 DEP-11 Metadata [733 kB] 取得:32 http://archive.ubuntu.com/ubuntu xenial/main DEP-11 64x64 Icons [409 kB] 取得:33 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [8,344 B] 取得:34 http://archive.ubuntu.com/ubuntu xenial/restricted Translation-en [2,908 B] 取得:35 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 DEP-11 Metadata [186 B] 取得:36 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [7,532 kB] 取得:37 http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu xenial InRelease [17.5 kB] 取得:38 http://archive.ubuntu.com/ubuntu xenial/universe Translation-ja [1,034 kB] 取得:39 http://archive.ubuntu.com/ubuntu xenial/universe Translation-en [4,354 kB] 取得:40 http://archive.ubuntu.com/ubuntu xenial/universe amd64 DEP-11 Metadata [3,410 kB] 取得:41 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease [17.5 kB] 取得:42 http://archive.ubuntu.com/ubuntu xenial/universe DEP-11 64x64 Icons [7,448 kB] 取得:43 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial/main Sources [21.4 kB] 取得:44 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [144 kB] 取得:45 http://archive.ubuntu.com/ubuntu xenial/multiverse Translation-ja [8,704 B] 取得:46 http://archive.ubuntu.com/ubuntu xenial/multiverse Translation-en [106 kB] 取得:47 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 DEP-11 Metadata [63.8 kB] 取得:48 http://archive.ubuntu.com/ubuntu xenial/multiverse DEP-11 64x64 Icons [230 kB] 取得:49 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [856 kB] 取得:50 http://archive.ubuntu.com/ubuntu xenial-updates/main Translation-en [349 kB] 取得:51 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 DEP-11 Metadata [320 kB] 取得:52 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease [23.5 kB] 取得:53 http://archive.ubuntu.com/ubuntu xenial-updates/main DEP-11 64x64 Icons [237 kB] 取得:54 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [7,556 B] 取得:55 http://archive.ubuntu.com/ubuntu xenial-updates/restricted Translation-en [2,272 B] 取得:56 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 DEP-11 Metadata [157 B] 取得:57 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [690 kB] 取得:58 http://archive.ubuntu.com/ubuntu xenial-updates/universe Translation-en [279 kB] 取得:59 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 DEP-11 Metadata [247 kB] 取得:60 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial/main amd64 Packages [40.0 kB] 取得:61 http://archive.ubuntu.com/ubuntu xenial-updates/universe DEP-11 64x64 Icons [335 kB] 取得:62 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [16.4 kB] 取得:63 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse Translation-en [8,344 B] 取得:64 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 DEP-11 Metadata [5,968 B] 取得:65 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse DEP-11 64x64 Icons [14.3 kB] 取得:66 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [7,304 B] 取得:67 http://archive.ubuntu.com/ubuntu xenial-backports/main Translation-en [4,456 B] 取得:68 https://packagecloud.io/slacktechnologies/slack/debian jessie/main amd64 Packages [9,293 B] 取得:69 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 DEP-11 Metadata [3,328 B] 取得:70 http://archive.ubuntu.com/ubuntu xenial-backports/main DEP-11 64x64 Icons [29 B] 取得:71 http://archive.ubuntu.com/ubuntu xenial-backports/restricted amd64 DEP-11 Metadata [194 B] 取得:72 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [7,804 B] 取得:73 http://archive.ubuntu.com/ubuntu xenial-backports/universe Translation-en [4,184 B] 取得:74 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 DEP-11 Metadata [5,104 B] 無視:75 https://packagecloud.io/slacktechnologies/slack/debian jessie/main i386 Packages 取得:76 http://archive.ubuntu.com/ubuntu xenial-backports/universe DEP-11 64x64 Icons [1,789 B] 取得:77 http://archive.ubuntu.com/ubuntu xenial-backports/multiverse amd64 DEP-11 Metadata [216 B] 取得:78 http://archive.ubuntu.com/ubuntu xenial-backports/multiverse DEP-11 64x64 Icons [29 B] 取得:79 http://archive.ubuntu.com/ubuntu xenial-security/main amd64 Packages [563 kB] 取得:75 https://packagecloud.io/slacktechnologies/slack/debian jessie/main i386 Packages [4,991 B] 取得:80 http://archive.ubuntu.com/ubuntu xenial-security/main Translation-en [237 kB] 取得:81 http://archive.ubuntu.com/ubuntu xenial-security/main amd64 DEP-11 Metadata [67.7 kB] 取得:82 http://archive.ubuntu.com/ubuntu xenial-security/main DEP-11 64x64 Icons [68.0 kB] 取得:83 http://archive.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [7,204 B] 取得:84 http://archive.ubuntu.com/ubuntu xenial-security/restricted Translation-en [2,152 B] 取得:85 http://archive.ubuntu.com/ubuntu xenial-security/restricted amd64 DEP-11 Metadata [200 B] 取得:86 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial/main i386 Packages [39.9 kB] 取得:87 http://archive.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [387 kB] 取得:88 http://archive.ubuntu.com/ubuntu xenial-security/universe Translation-en [147 kB] 取得:89 http://archive.ubuntu.com/ubuntu xenial-security/universe amd64 DEP-11 Metadata [108 kB] 取得:90 http://archive.ubuntu.com/ubuntu xenial-security/universe DEP-11 64x64 Icons [145 kB] 取得:91 http://archive.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [3,460 B] 取得:92 http://archive.ubuntu.com/ubuntu xenial-security/multiverse Translation-en [1,744 B] 取得:93 http://archive.ubuntu.com/ubuntu xenial-security/multiverse amd64 DEP-11 Metadata [212 B] 取得:94 http://archive.ubuntu.com/ubuntu xenial-security/multiverse DEP-11 64x64 Icons [29 B] 取得:95 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial/main Translation-en [13.0 kB] 無視:96 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial Release 取得:97 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial/main Sources [24.0 kB] 取得:98 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial/main amd64 Packages [57.1 kB] 取得:99 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial/main i386 Packages [56.6 kB] 取得:100 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial/main Translation-en [28.0 kB] 取得:101 http://ppa.launchpad.net/philip.scott/elementary-tweaks/ubuntu xenial/main amd64 Packages [816 B] 取得:102 http://ppa.launchpad.net/philip.scott/elementary-tweaks/ubuntu xenial/main i386 Packages [820 B] 取得:103 http://ppa.launchpad.net/philip.scott/elementary-tweaks/ubuntu xenial/main Translation-en [304 B] 取得:104 http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu xenial/main amd64 Packages [988 B] 取得:105 http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu xenial/main i386 Packages [992 B] 取得:106 http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu xenial/main Translation-en [492 B] 取得:107 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial/main amd64 Packages [1,556 B] 取得:108 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial/main i386 Packages [1,556 B] 取得:109 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial/main Translation-en [928 B] 無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages 無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages 無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages 無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP 無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja 無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en 無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata 無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons 無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages 無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages 無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages 無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP 無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja 無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en 無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata 無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons 無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages 無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages 無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages 無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP 無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja 無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en 無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata 無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons 無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages 無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages 無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages 無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP 無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja 無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en 無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata 無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons 無視:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages 無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages 無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages 無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP 無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja 無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en 無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata 無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons エラー:110 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 Packages 404 Not Found 無視:111 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main i386 Packages 無視:112 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main all Packages 無視:113 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja_JP 無視:114 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-ja 無視:115 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main Translation-en 無視:116 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main amd64 DEP-11 Metadata 無視:117 http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial/main DEP-11 64x64 Icons 34.3 MB を 45秒 で取得しました (750 kB/s) パッケージリストを読み込んでいます... 完了 W: リポジトリ http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu xenial Release には Release ファイルがありません。 N: このようなリポジトリから取得したデータは認証できないので、データの使用は潜在的に危険です。 N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。 E: http://ppa.launchpad.net/hunter-kaller/ppa/ubuntu/dists/xenial/main/binary-amd64/Packages の取得に失敗しました 404 Not Found E: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。 $ heroku --version heroku: コマンドが見つかりません
heroku: command not found
つらい。
だめだった対処法
まず、herokuがあるかどうか確認。
$ sudo updatedb $ sudo locate heroku /var/lib/apt/lists/cli-assets.heroku.com_apt_._InRelease /var/lib/apt/lists/cli-assets.heroku.com_apt_._Packages
wget
で取ったはずなのにない。
次にapt
のパッケージupdateミスのせいかと思い、いろいろ試した。
以下の記事を参考にした。
これでもapt update
がうまく行かず、ダメだった。
最終的な対処法
npm
をつかってheroku cli
を入れました。
npm install -g heroku-cli
はもう使われてないそうなので、npm install -g heroku
を入れる。
$ sudo npm install -g heroku /usr/local/bin/heroku -> /usr/local/lib/node_modules/heroku/bin/run + heroku@7.16.6 added 375 packages from 264 contributors in 11.284s $ heroku --version heroku/7.16.6 linux-x64 node-v10.2.1
やっと解決。
終わりに
デプロイコストがないとはいいましたが、heroku環境作るのに一日も費やしてしまいました。
反省してます。
【備忘録】RailsでPostgreSQLを入れた際のエラー対処(Ubuntu)
どうもてぃです。
作成したwebアプリをherokuへあげるため、staging環境のみPostgreSQLを入れてテストをしようと思った次第です。
DB周りは安定してエラーが出るのでいつでも身構えて処理できますね。
実行環境
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
・ ・ ・ gem 'mysql', '>= 0.4.4', '< 0.6.0' gem 'pg', group: :staging ・ ・ ・
staging環境のみPostgreSQL。
本番環境はMySQLを使う予定(そもそもherokuでテスト運用するならPostgreSQLにすればよかった)。
bundle install
すると上記のエラー。
エラー内容は以下。
Fetching pg 1.1.3 Installing pg 1.1.3 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /home/user/project/vendor/bundle/ruby/2.5.0/gems/pg-1.1.3/ext /home/user/.rbenv/versions/2.5.0/bin/ruby -r ./siteconf20181005-30856-10oqjtj.rb extconf.rb checking for pg_config... yes Using config values from /usr/bin/pg_config You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. checking for libpq-fe.h... no Can't find the 'libpq-fe.h header *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/home/user/.rbenv/versions/2.5.0/bin/$(RUBY_BASE_NAME) --with-pg --without-pg --enable-windows-cross --disable-windows-cross --with-pg-config --without-pg-config --with-pg_config --without-pg_config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/lib To see why this extension failed to compile, please check the mkmf.log which can be found here: /home/user/project/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/pg-1.1.3/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /home/user/project/vendor/bundle/ruby/2.5.0/gems/pg-1.1.3 for inspection. Results logged to /home/user/project/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/pg-1.1.3/gem_make.out An error occurred while installing pg (1.1.3), and Bundler cannot continue. Make sure that `gem install pg -v '1.1.3'` succeeds before bundling. In Gemfile: pg
gemをインストールしてみる
An error occurred while installing pg (1.1.3), and Bundler cannot continue. Make sure that `gem install pg -v '1.1.3'` succeeds before bundling.
こんなこと書いてたので安直にgem install
してみる。
$ gem install pg -v '1.1.3' Fetching: pg-1.1.3.gem (100%) Building native extensions. This could take a while... ERROR: Error installing pg: ERROR: Failed to build gem native extension. current directory: /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/pg-1.1.3/ext /home/user/.rbenv/versions/2.5.0/bin/ruby -r ./siteconf20181005-31001-qz27e2.rb extconf.rb checking for pg_config... yes Using config values from /usr/bin/pg_config You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. checking for libpq-fe.h... no Can't find the 'libpq-fe.h header *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/home/user/.rbenv/versions/2.5.0/bin/$(RUBY_BASE_NAME) --with-pg --without-pg --enable-windows-cross --disable-windows-cross --with-pg-config --without-pg-config --with-pg_config --without-pg_config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/lib To see why this extension failed to compile, please check the mkmf.log which can be found here: /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0-static/pg-1.1.3/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/pg-1.1.3 for inspection. Results logged to /home/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0-static/pg-1.1.3/gem_make.out
おんなじエラーですね。
よく見てみると、ここらへんがヒントっぽい。
Using config values from /usr/bin/pg_config You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. checking for libpq-fe.h... no Can't find the 'libpq-fe.h header
てかそもそもlibpq-dev
って入ってるんかいな?
libpq-devを入れる
$ sudo apt install libpq-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: comerr-dev krb5-multidev libgssrpc4 libkadm5clnt-mit9 libkadm5srv-mit9 libkdb5-8 提案パッケージ: krb5-doc krb5-user postgresql-doc-9.5 以下のパッケージが新たにインストールされます: comerr-dev krb5-multidev libgssrpc4 libkadm5clnt-mit9 libkadm5srv-mit9 libkdb5-8 libpq-dev アップグレード: 0 個、新規インストール: 7 個、削除: 0 個、保留: 198 個。 485 kB のアーカイブを取得する必要があります。 この操作後に追加で 2,528 kB のディスク容量が消費されます。 続行しますか? [Y/n] Y 取得:1 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libgssrpc4 amd64 1.13.2+dfsg-5ubuntu2 [54.5 kB] 取得:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libkdb5-8 amd64 1.13.2+dfsg-5ubuntu2 [37.1 kB] 取得:3 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libkadm5srv-mit9 amd64 1.13.2+dfsg-5ubuntu2 [51.3 kB] 取得:4 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libkadm5clnt-mit9 amd64 1.13.2+dfsg-5ubuntu2 [36.7 kB] 取得:5 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 comerr-dev amd64 2.1-1.42.13-1ubuntu1 [38.2 kB] 取得:6 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 krb5-multidev amd64 1.13.2+dfsg-5ubuntu2 [113 kB] 取得:7 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpq-dev amd64 9.5.14-0ubuntu0.16.04 [154 kB] 485 kB を 1秒 で取得しました (313 kB/s) 以前に未選択のパッケージ libgssrpc4:amd64 を選択しています。 (データベースを読み込んでいます ... 現在 329939 個のファイルとディレクトリがインストールされています。) .../libgssrpc4_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ... libgssrpc4:amd64 (1.13.2+dfsg-5ubuntu2) を展開しています... 以前に未選択のパッケージ libkdb5-8:amd64 を選択しています。 .../libkdb5-8_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ... libkdb5-8:amd64 (1.13.2+dfsg-5ubuntu2) を展開しています... 以前に未選択のパッケージ libkadm5srv-mit9:amd64 を選択しています。 .../libkadm5srv-mit9_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ... libkadm5srv-mit9:amd64 (1.13.2+dfsg-5ubuntu2) を展開しています... 以前に未選択のパッケージ libkadm5clnt-mit9:amd64 を選択しています。 .../libkadm5clnt-mit9_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ... libkadm5clnt-mit9:amd64 (1.13.2+dfsg-5ubuntu2) を展開しています... 以前に未選択のパッケージ comerr-dev を選択しています。 .../comerr-dev_2.1-1.42.13-1ubuntu1_amd64.deb を展開する準備をしています ... comerr-dev (2.1-1.42.13-1ubuntu1) を展開しています... 以前に未選択のパッケージ krb5-multidev を選択しています。 .../krb5-multidev_1.13.2+dfsg-5ubuntu2_amd64.deb を展開する準備をしています ... krb5-multidev (1.13.2+dfsg-5ubuntu2) を展開しています... 以前に未選択のパッケージ libpq-dev を選択しています。 .../libpq-dev_9.5.14-0ubuntu0.16.04_amd64.deb を展開する準備をしています ... libpq-dev (9.5.14-0ubuntu0.16.04) を展開しています... libc-bin (2.23-0ubuntu10) のトリガを処理しています ... man-db (2.7.5-1) のトリガを処理しています ... doc-base (0.10.7) のトリガを処理しています ... doc-base ファイルを 1 個追加 を処理中... scrollkeeper をドキュメントとして登録しています... install-info (6.1.0.dfsg.1-5) のトリガを処理しています ... libgssrpc4:amd64 (1.13.2+dfsg-5ubuntu2) を設定しています ... libkdb5-8:amd64 (1.13.2+dfsg-5ubuntu2) を設定しています ... libkadm5srv-mit9:amd64 (1.13.2+dfsg-5ubuntu2) を設定しています ... libkadm5clnt-mit9:amd64 (1.13.2+dfsg-5ubuntu2) を設定しています ... comerr-dev (2.1-1.42.13-1ubuntu1) を設定しています ... krb5-multidev (1.13.2+dfsg-5ubuntu2) を設定しています ... libpq-dev (9.5.14-0ubuntu0.16.04) を設定しています ... libc-bin (2.23-0ubuntu10) のトリガを処理しています ...
うまくいった。
再びgem install
$ gem install pg -v '1.1.3' Building native extensions. This could take a while... Successfully installed pg-1.1.3 Parsing documentation for pg-1.1.3 Installing ri documentation for pg-1.1.3 Done installing documentation for pg after 0 seconds 1 gem installed
お、はいったぞ。
そして無事bundle install
も通りました。
これからherokuへデプロイするぞー。
【備忘録】link_toでhtmlタグを渡したいとき
最近Railsの開発をはじめました。
どうもてぃです。
例えば <i class="fas fa-user">
のアイコンに対して link_to
を使ってリンク化したいとき、ありますよね。
そんな時は、 link_to(<path>, <styleとか>) do
を使う。
前の会社でRailsをガシガシやってた時に使ったので、そういやそんなのあったなーてな感じで調べたら出てきた。
<%= link_to(users_path, style: 'color:#fff') do %> <i class="fas fa-user pa_r10"></i>アカウント設定 <% end %>
ヘッダーの右上に配置。
クリックしてアカウント設定画面に遷移できるようになりました。
【雑記】GCPにsshログインした時にチョコボ4匹を出現させた
Qiitaの転載です。
なぜやったか
AWSがあるならGCPもだろ! ってな感じで、Qiitaの記事見た瞬間に業務をほったらかしにしてやってしまいました。
全く後悔はありません、むしろ清々しいです。
チョコボを調達
https://github.com/dot-motd/final-fantasy こちらのgistを拝借させていただきました。
設定の確認
$ ssh gcp-test Last login: Tue Sep 25 17:26:06 2018 from s8.hfukuokafl1.vectant.ne.jp __ ____ _______ ___ _ _____ __________ / //_/ / / / ___// | / | / / | / ____/ _/ / ,< / / / /\__ \/ /| | / |/ / /| |/ / __ / / / /| / /_/ /___/ / ___ |/ /| / ___ / /_/ // / /_/ |_\____//____/_/ |_/_/ |_/_/ |_\____/___/ Version 8.4.0-3, Powered by Prime Strategy.
sshしたときにkusanagiを使っているので、それっぽいのが出てきます。
/etc/motd
をrootユーザーで確認。
$ cat /etc/motd __ ____ _______ ___ _ _____ __________ / //_/ / / / ___// | / | / / | / ____/ _/ / ,< / / / /\__ \/ /| | / |/ / /| |/ / __ / / / /| / /_/ /___/ / ___ |/ /| / ___ / /_/ // / /_/ |_\____//____/_/ |_/_/ |_/_/ |_\____/___/ Version 8.4.0-3, Powered by Prime Strategy.
これですね。
試しに書き込んで、もう一度ssh接続してみる。
$ vim /etc/motd __ ____ _______ ___ _ _____ __________ / //_/ / / / ___// | / | / / | / ____/ _/ / ,< / / / /\__ \/ /| | / |/ / /| |/ / __ / / / /| / /_/ /___/ / ___ |/ /| / ___ / /_/ // / /_/ |_\____//____/_/ |_/_/ |_/_/ |_\____/___/ Version 8.4.0-3, Powered by Prime Strategy. テストでやんす # sshログアウト $ exit $ ssh gcp-test Last login: Tue Sep 25 17:26:06 2018 from s8.hfukuokafl1.vectant.ne.jp __ ____ _______ ___ _ _____ __________ / //_/ / / / ___// | / | / / | / ____/ _/ / ,< / / / /\__ \/ /| | / |/ / /| |/ / __ / / / /| / /_/ /___/ / ___ |/ /| / ___ / /_/ // / /_/ |_\____//____/_/ |_/_/ |_/_/ |_\____/___/ Version 8.4.0-3, Powered by Prime Strategy. テストでやんす
じゃあこれに直接書き込めば良さそう。
設定
ちゃんとcurlで取れているか確認。
おっけい。
$ curl -s https://gist.githubusercontent.com/makocchi-git/9775443/raw/70b3e0250a0d07be3c4dcdaed3dff5662e2a7ab4/chocobo-allstar.txt | sudo tee -a /etc/motd
上記のコマンド実行後、最後sshで接続。
問題点
AWSのようにupdate-motd.d
がなかったので、サーバーを再起動すると設定が消えちゃう可能性があります(試してない)。
特に調査せずやったので、後日暇があればやってみようとおもいます。
現状再起動をほとんどやらないサーバーでやったので、今回はこのままにしときます。
チョコボ可愛い
スライム可愛い
チョコボも可愛い
今度上司が接続するサーバーにチョコボ仕込んどきます。
追記
はぐれメタルも可愛い。
【メモ】docker runにおけるオプションまとめ
どうもってぃです。
dockerやらなかったらすぐわすれちゃいますよね。
なので、復習をかねて docker run
時のオプションについてまとめました。
コンテナの生成 & 起動
docker run
でコンテナの生成 & 起動を行います。
$ docker run [オプション] イメージ名[:タグ名][引数]
この時のオプションを以下にまとめる。
コンテナの生成・起動(単純なオプション)
-a : 標準入力、標準出力、標準エラー出力にアタッチする --cidfile="ファイル名" : コンテナIDをファイルに出力する -d, --detach=false : コンテナを生成し、バックグラウンドで実行する -i, --interactive=false : コンテナの標準入力を開く -t, --tty=false : tty(端末デバイス)を使う --name : コンテナ名
コンテナのバックグラウンド実行
-d, --detach=false : 同上 -u, --user="ユーザー名" : ユーザー名を指定する --restart=[no | on-failure | on-failure:回数n | always] : コマンドの実行結果によって再起動を行うオプション no : 再起動しない on-failure : 終了ステータスが0出ない時に再起動する on-failure:回数n : 終了ステータスが0出ない時にn回再起動する always : 常に再起動する --rm : コマンド実行完了後にコンテナを自動で削除する
コンテナのネットワーク設定
--add-host=[ホスト名:IPアドレス] : コンテナの/etc/hostsにホスト名とIPアドレスを定義する --dns=[IPアドレス] : DNSサーバーのIPアドレス指定 --expose=[ポート番号] : 指定したレンジのポート番号を割り当てる --mac-address=[MACアドレス] : コンテナのMACアドレスを指定する --net=[bridge | none | conrainer:<name|id> | host] : コンテナのネットワークを指定する bridge : ブリッジ接続を行う none : ネットワークに接続しない container:[name|id] : 他のコンテナのネットワークを使う host : コンテナがホストOSのネットワークを使う -h, --host="ホスト名" : コンテナ自身のホスト名を指定する -p, --publish-all=[true | false] : ホストの任意のポートをコンテナに割り当てる --link=[コンテナ名:エイリアス] : 他のコンテナからアクセスするときの名前
リソースを指定してコンテナを生成・実行
-c, --cpu-shares=0 : CPUの使用の配分 -m, --memory=[メモリ使用量] : 使用するメモリを制限して実行する -v, --volume=[ホストのディレクトリ]:[コンテナのディレクトリ] ホストとコンテナのディレクトリを共有
コンテナを生成・起動する環境を指定
-e, --env=[環境変数] : 環境変数を指定する --env-file=[ファイル名] : 環境変数をファイルから設定する --privileged=[true | false] : 特権モードで起動する(ホストのカーネル昨日も操作可) --read-only=[true | false] : コンテナのファイルシステムを読み込み専用にする -w, --workdir=[パス] : コンテナの作業ディレクトリを指定する
おわり
おそらくすべて覚えるのは難しいので、よく使われるものを中心に覚えていくのがいいかと思います。
僕も結構忘れてたので覚え直します。