- Parameter=仮引数(関数の定義に使用する引数)
- Argument=実引数(関数を呼び出す際に渡す引数)
function example(parameter) { // 関数の定義に使用する引数
console.log(parameter);
}
const argument = "foo";
example(argument); // 関数を呼び出す際に渡す引数
function example(parameter) { // 関数の定義に使用する引数
console.log(parameter);
}
const argument = "foo";
example(argument); // 関数を呼び出す際に渡す引数
ブックマークしていたURLに hl=ja というクエリパラメータが入っていたことが原因でした。
https://calendar.google.com/calendar/u/0/r など、該当のクエリパラメータがついていないURLにアクセスすれば、カレンダーの設定に応じた言語で表示されます。
英語圏の人にメッセージを送るため、会議情報を英語でコピーしたかったのですが、Googleカレンダーの「設定」>「言語と地域」>「言語」を英語に設定しても日本語表示のまま切り替わらない。
Googleアカウント自体の設定言語や、ブラウザの言語も英語にしてみたが変わらない。
で、URLをよく見ると https://calendar.google.com/calendar/u/0/r?hl=ja&t=..... となっていたので、そういえば以前Google検索の言語の切り替え方を調べたときにこのパラメータが関係あったなと思って hl=ja& の部分を削除したら、Googleカレンダーの設定通りに英語に切り替わりました。
Firebaseに新しいプロジェクトを追加しようとしたところ、プロジェクト数の上限が近づいていました。
過去にActions on Googleを色々試していた時にサンプルを動かすためだけに作ったプロジェクトが多数あったため、それを削除して整理しようと思いました。
Firebaseコンソールでプロジェクトの設定画面からFirebaseプロジェクトを削除しようとすると、「削除を防ぐリーエンがプロジェクトに配置されました。削除を許可するには、リーエンを削除してください。」というエラーが表示され、削除できませんでした。
Dialogflowとリンクされていることが原因のようだったので、Dialogflowコンソールから該当するDialogflowエージェントを削除しました。
ところが、Dialogflowエージェントの削除後も同じエラーが表示され続け、Firebaseプロジェクトが削除できない状態になりました。
下記手順で、プロジェクトの削除を防いでいる「リーエン」を削除することで解決できました。
gcloud CLI (Google Cloud CLI) をインストール
参考:
https://cloud.google.com/sdk/docs/install-sdk?hl=ja
>gcloud alpha resource-manager liens list --project my-project-name
NAME ORIGIN REASON
p703716169729-*********-****-****-****-************ You cannot delete this project because it is linked with a Dialogflow agent. Please follow the link to Dialogflow and delete the agent: https://console.dialogflow.com/api-client/#/agent/430c5fc3-****-****-****-************/ Deletion blocked by Dialogflow.
liens/<NAME欄に表示されたリーエンの名前>
の形式でリーエン名を指定して、下記コマンドを実行
>gcloud alpha resource-manager liens delete liens/p703716169729-*********-****-****-****-************
Deleted [liens/liens/p703716169729-*********-****-****-****-************].
>gcloud alpha resource-manager liens list --project my-project-name
Listed 0 items.
=begin
ここがコメントになる
ここがコメントになる
=end
VS Code では editor.action.blockComment に割り当てているショートカットキーで出てくる。デフォルトは Shift + Alt + A ?
私はIntelliJ IDEA KeybindingsでRubyMineっぽい割り当てにしているので Ctrl + Shift + / で出てくる。
erbでも、先に <% %> を入力した後その内側で Ctrl + Shift + / を押すと出てくる。
色々Disableして試した所おそらく VSCode Ruby extension のおかげ。
単語を打ち終わって改行したいのに、Suggestions(入力候補)で別の単語が出てしまっていて、改行すると違う単語になってしまう。
Escで抜けることはできるんですが、キーが遠い…
Enterキーで確定する設定をOFFにしてTabキーで確定するのも試したのですが、やっぱりEnterで確定したい。
自分がSuggestionsを閉じようとして直感的に押すキーは方向キーの「←」。しかし単語の頭まで移動しないと抜けてくれない。
行末で、次の行がある状態なら「→」を押せば良いのですが、ファイルの1行目を書き始めたところだったりすると→を押しても閉じてくれない。
なのでEscapeキーの動作を←キーに割り当てられないか?と調べました。
Visual Studio Code
のリモートWSLを使っていて、内蔵ターミナルでカーソルから行末まで削除のつもりで
Ctrl + K を押すと、VS
Codeのショートカットキーとして認識されてしまい動作しない。
設定で「Terminal > Integrated: Allow Chords」をOFFにすることで、ターミナルのキーバインドとして動作させることができた。

Git Bash を起動したときにデフォルトで表示されるディレクトリを変更したい時、 .bashrc や .bash_profile ファイルに cd $HOME/other_directory のようなコマンドを追記して設定すると、Windowsのエクスプローラーから右クリック>「Git Bash Here」 のメニューから起動した時でもこのコマンドが実行されてしまい、常に .bashrc や .bash_profile で指定したディレクトリから起動されてしまう。
ショートカット/スタートメニューから起動したときには指定のディレクトリ、「Git Bash Here」から起動した時にはそのディレクトリから起動されるようにしたい。
Windowsのショートカットのプロパティで設定する。
下記の動画の内容について、自分の理解のメモ。
このドキュメントからリンクされていた動画です。
Cloud Firestore セキュリティ ルールを使ってみる | Firebase
{database} →任意のdatabase名にmatchし、matchしたdatabase名を database という変数に格納する{restOfPath=**} →これ以下のパスにあるすべてのドキュメント・コレクション
Cloud Firestoreでは、上の階層で指定されたルールは下の階層に引き継がれない
(Realtime Databaseの場合と異なる)
service cloud.firestore {
match databases/{database}/document {
// restaurantID = The ID of the restaurant doc
match /restaurants/{restaurantID} {
// restaurantID = The ID of the restaurant doc
// reviewID = The ID of the review doc
allow write: if reviewID == "review_234"
}
}
}アクションは5種類
read
write
request オブジェクトは「authオブジェクト」と「resourceオブジェクト」から成る
が入っている感じ
こんな感じで、ルールにはresourceオブジェクトのバリデーションっぽいものも書くことができる
service cloud.firestore {
match /databases/{database}/documents {
match /restaurants/{restaurantID} {
match /reviews/{reviewID} {
// score の値が数値の時のみcreateを許可する
allow create: if request.resource.data.score is number &&
// かつ、resource の reviewrID が 現在のユーザーのIDと一致する場合のみcreateを許可する
request.resource.data.reviewerID == request.auth.uid;
}
}
}
}を指す。
service cloud.firestore {
match /databases/{database}/documents {
match /restaurants/{restaurantID} {
match /reviews/{reviewID} {
// createのルール
allow create: if request.resource.data.score is number &&
request.resource.data.reviewerID == request.auth.uid;
// updateのルール
allow update: if request.resource.data.score is number &&
request.resource.data.reviewerID == request.auth.uid &&
// リクエストのscoreの値と、既にDBに保存されているscoreの値が同じ時のみupdateを許可する(=scoreの値を変更できないようにする)
request.resource.data.score == resource.data.score;
}
}
}
}query で複数のデータのリスト(コレクション)を取得する場合、
ルールで「state が published なデータのみreadを許可する」となっていると、
「全部のデータを取得」のクエリはpermission denied error になる。(たとえ今あるデータがすべてstate == published だったとしても)
「state が publishedの全データを取得」というクエリなら成功する。
自動でstate == published のデータだけフィルターして返してくれたりはしない。
※1件だけを指定して取得するリクエストの場合は、データの内容をチェックしてルールに合致するか見て返す・返さないを判断してくれる。
function の形で再利用できるようにして整理することもできる。
なんかどうも違うバージョンを指しているのか何なのか上手くいかないので…
(正確なメッセージをとっておくのを忘れてしまいましたが、psql -V とやるとpostgresql 11 をインストールしているはずなのに10.Xのバージョン番号が出てしまう状態でした。)
sidemt@PC:~$ psql postgres
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
【参考】
完全にubuntuでpostgresqlをパージして再インストールするには? - コードログ
上記の元記事: How to thoroughly purge and reinstall postgresql on ubuntu? - Stack Overflow
システムからすべてのPostgreSQLを削除
apt-get --purge remove postgresql\*上記の記事では下記も実行するように書かれていますが、これまで試行錯誤する中で消してしまっていたのか、それらしきユーザーやディレクトリが存在しませんでした。
rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres
apt-get install postgresqlできた
sidemt@PC:~$ sudo service postgresql start [ OK ]
sidemt@PC:~$ psql postgres
psql: FATAL: role "sidemt" does not exist
sidemt@PC:~$ psql -V
psql (PostgreSQL) 11.5 (Ubuntu 11.5-1.pgdg18.04+1)バージョンは意図したものになった。
sidemt(Ubuntuのログインユーザーの名前にしてる)というユーザーがいないと言われたので作る。
(Ruby on Rails5速習実践ガイドのPostgresのセットアップの箇所で言われてるのがこれかなと…)
sidemt@PC:~$ sudo su postgres -c 'createuser -s sidemt'
[sudo] password for sidemt:
sidemt@PC:~$ psql postgres
psql (11.5 (Ubuntu 11.5-1.pgdg18.04+1))
Type "help" for help.
postgres=#できた。
けど bin/rails db:create しようとすると上手くいかない
sidemt@PC:~/myapp-rails$ sudo service postgresql start
* Starting PostgreSQL 11 database server [ OK ]
sidemt@PC:~/myapp-rails$ bin/rails db:create
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Couldn't create 'myapp-rails_development' database. Please check your configuration.
rails aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
/mnt/c/Users/Owner/workspace/myapp-rails/bin/rails:9:in `<top (required)>'
/mnt/c/Users/Owner/workspace/myapp-rails/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:create
(See full trace by running task with --trace)Rails がPort 5432を使おうとしているが、Postgresは5433で起動している様子
下記ヘルプのportの項を見るとデフォルトでは5433が使われるみたい。
sidemt@PC:~/myapp-rails$ psql -?
psql is the PostgreSQL interactive terminal.
Usage:
psql [OPTION]... [DBNAME [USERNAME]]
General options:
-c, --command=COMMAND run only single command (SQL or internal) and exit
-d, --dbname=DBNAME database name to connect to (default: "sidemt")
-f, --file=FILENAME execute commands from file, then exit
-l, --list list available databases, then exit
-v, --set=, --variable=NAME=VALUE
set psql variable NAME to VALUE
(e.g., -v ON_ERROR_STOP=1)
-V, --version output version information, then exit
-X, --no-psqlrc do not read startup file (~/.psqlrc)
-1 ("one"), --single-transaction
execute as a single transaction (if non-interactive)
-?, --help[=options] show this help, then exit
--help=commands list backslash commands, then exit
--help=variables list special variables, then exit
Input and output options:
-a, --echo-all echo all input from script
-b, --echo-errors echo failed commands
-e, --echo-queries echo commands sent to server
-E, --echo-hidden display queries that internal commands generate
-L, --log-file=FILENAME send session log to file
-n, --no-readline disable enhanced command line editing (readline)
-o, --output=FILENAME send query results to file (or |pipe)
-q, --quiet run quietly (no messages, only query output)
-s, --single-step single-step mode (confirm each query)
-S, --single-line single-line mode (end of line terminates SQL command)
Output format options:
-A, --no-align unaligned table output mode
-F, --field-separator=STRING
field separator for unaligned output (default: "|")
-H, --html HTML table output mode
-P, --pset=VAR[=ARG] set printing option VAR to ARG (see \pset command)
-R, --record-separator=STRING
record separator for unaligned output (default: newline)
-t, --tuples-only print rows only
-T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)
-x, --expanded turn on expanded table output
-z, --field-separator-zero
set field separator for unaligned output to zero byte
-0, --record-separator-zero
set record separator for unaligned output to zero byte
Connection options:
-h, --host=HOSTNAME database server host or socket directory (default: "/var/run/postgresql")
-p, --port=PORT database server port (default: "5433") # ここ
-U, --username=USERNAME database user name (default: "sidemt")
-w, --no-password never prompt for password
-W, --password force password prompt (should happen automatically)
For more information, type "\?" (for internal commands) or "\help" (for SQL
commands) from within psql, or consult the psql section in the PostgreSQL
documentation.
Report bugs to <pgsql-bugs@postgresql.org>.
database.yml にポート番号の指定を追加して、5433を利用するようにしてあげると実行できた。
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
port: 5433 # ここを追加
最初にPostgreSQLをインストールするときに参考にさせていただいた、Ruby on Rails5速習実践ガイド↓。
今日読んだ物色々メモ。
Actions on Googleの基本とDatabaseとの接続について調べてます。
Submit Your Action
https://developers.google.com/actions/sdk/submit
gactions update --action_package action.json --project PROJECT_ID はAction package を Actions projectにアップロードするという操作。
package name は自分が作成する Actions package の .json ファイルのファイル名。このスタートガイドの例だと action.json
gactions command-line reference
https://developers.google.com/actions/tools/gactions-cli
→ gactions test --action_package PACKAGE_NAME --project PROJECT_ID を使えば本番リリース後もテスト用だけに最新バージョンをアップロードできる??
Enhance your web content
https://developers.google.com/actions/web/
→この方式で行けるかと一瞬思ったけど、本当にFAQなりしっかりしたNewsなりのフォーマットにのっとったコンテンツじゃないと無理そう。
Actions on Google Conversation HTTP/JSON Webhook API
https://developers.google.com/actions/build/json/
おそらく以下のような流れなんだと思う。
user -speak→ GoogleAssistant(Actions) -HTTP POST request(JSON)→ Fulfillment
user ←speak- GoogleAssistant(Actions) ←HTTP response(JSON)- FulfillmentDialogflow を使う場合と Actions SDK を使う場合で、ActionsとFulfillmentがやり取りするJSONのフォーマットが違う。
Conversation API playground
https://developers.google.com/actions/conversation-api-playground
ここで、レスポンスさせたい項目を選んでJSON Responseを作れる。Dialogflow用もActions SDK用もできる。
「本気のしりとり」Google Homeアプリを作りました。
https://techblog.gmo-ap.jp/2018/01/19/%E3%80%8C%E6%9C%AC%E6%B0%97%E3%81%AE%E3%81%97%E3%82%8A%E3%81%A8%E3%82%8A%E3%80%8Dgoogle-home%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82/
DatabaseもDialogflowも両方使ってる。かなり参考になりそう。
dialogflow - How to use Firebase Database in Google Actions? - Stack Overflow
https://stackoverflow.com/questions/47096492/how-to-use-firebase-database-in-google-actions
ここから辿って↓へ
公式ドキュメント(日本語)
Firebase Realtime Database
https://firebase.google.com/docs/database/
REST API
https://firebase.google.com/docs/database/rest/start
Firebase Realtime Database
★データの取得 たぶんメインでこれを知りたい。
https://firebase.google.com/docs/database/rest/retrieve-data
データの保存
https://firebase.google.com/docs/database/rest/save-data
データベースの構造化
https://firebase.google.com/docs/database/rest/structure-data
データベースの選択: Cloud Firestore または Realtime Database
https://firebase.google.com/docs/firestore/rtdb-vs-firestore
単一の Firebase アプリまたはプロジェクト内で両データベースを並行して使用することができます。いずれの NoSQL データベースも保存できるデータタイプは同じであり、クライアント ライブラリの動作もほぼ同じです。
→とりあえずRealtimeDatabaseで始めてみてもいいんでない?その方がFirestoreよりナレッジたくさんありそう。
ここでもRealtime Database が挙げられてる。
https://developers.google.com/actions/tools/assistant-firebase-services
Node.js client library
https://developers.google.com/actions/reference/nodejsv2/overview
Conversation Webhook Format
https://developers.google.com/actions/build/json/conversation-webhook-json
Google アシスタント対応アプリを日本語で開発してみよう
https://developers-jp.googleblog.com/2017/10/google-assistant-app-ja.html
スタートガイド: 最初の関数を作成してデプロイする
https://firebase.google.com/docs/functions/get-started?hl=ja
Realtime Databaseの話もちょっと出てくる?
GitHubから「One of your dependencies has a security vulnerability」(package-lock.jsonで指定されてるパッケージに脆弱性があるよー)というアラートがきたので対応した手順をメモしておきます。
更新したいpackage.jsonがあるディレクトリで以下を実行
$ npm-check-updates -u --packageFile package.jsonこれで package.json の内容が書き換わる。
(npm-check-updates 自体がインストールされていなくて使えない場合は $ npm install -g npm-check-updates から。参考: npm入門 - Qiita )
次に npm update 。これで実際にパッケージが更新される。
$ npm updateそしたら脆弱性が見つかったって言われた
found 48 vulnerabilities (1 low, 47 high)
run `npm audit fix` to fix them, or `npm audit` for detailsなので npm audit fix
$ npm audit fixこれで、自動的にアップデートして対処できるものは対処してくれる。
npm audit すると今残ってる脆弱性の詳細を教えてくれる。こんな感じ。
$ npm audit
=== npm audit security report ===
Manual Review
Some vulnerabilities require your attention to resolve
Visit https://go.npm.me/audit-guide for additional guidance
Low Regular Expression Denial of Service
Package braces
Patched in >=2.3.1
Dependency of babel-cli
Path babel-cli > chokidar > anymatch > micromatch > braces
More info https://nodesecurity.io/advisories/786
found 1 low severity vulnerability in 3390 scanned packages
1 vulnerability requires manual review. See the full report for details.じゃあこの残ってるパッケージをどうしたらいいかっていうのはまた今度調べます… low severity なので。
緊急度が高いものはパッケージの開発者の方々もチェックして対応してくれていることが多いので、そのおかげで自動でアップデートできるみたいです。
Ruby on Rails 5 速習実践ガイドで躓いたところ。
Chapter 7-2で、本の記述に従って下記を tasks_controller に追加したところ、
@tasks = @q.result(distinct: true).recentindex を開こうとするとエラーが発生。
NoMethodError in TasksController#index undefined method `recent' for #<Task::ActiveRecord_AssociationRelation:0x00007f8298add2d0> Did you mean? reject reset
調べてみたところ、この .recent は Ruby や Rails、または ransack gem で用意されているメソッドではない様子。
「rails .recent メソッド」で検索して下記ページに行き当たり、これはScopeなのでは?と思い当る。
Railsでよく利用する、Scopeの使い方。 - Qiita
https://qiita.com/ngron/items/14a39ce62c9d30bf3ac3
本の索引からScopeのページを探して見返すと、P. 178 に下記の記載が。
scope :recent, -> { order(created_at: :desc) }このページを読んだ時点では「たとえば次のように ... 使うことができます」としていくつか使い方の例が挙げられているだけだったので、この scope が後々必要になるとは思わず、追加していなかったことが原因でした。
app/models/task.rb にこの scope を追加すると期待通り動作するようになりました。
参考・引用元: 現場で使える Ruby on Rails 5速習実践ガイド | マイナビブックス
時々追加してます。参考にさせていただいた皆様ありがとうございます。
あれどうやってやったんだっけ?って忘れてしまった未来の自分のためと、同じような情報を探している方々のためにメモしておきます。
ソースコードの表示(code-prettify)
技術ブログの「ソースコード」表示を効果的にカスタマイズする方法 | maesblog
https://mae.chab.in/archives/2963
pre記法にスクロールバーを表示させました - 部屋を掃除したら漫画が沢山出てきたので書く日記
http://bata64.hatenablog.jp/entry/20101109/1289274993
目次の表示
Google検索結果に表示される記事タイトル形式のカスタマイズ
リンクに target="blank" を付加する方法
Bloggerのエディタが使いにくいので、Markdownで大部分を書いてからHTMLに変換してコピペしてるので…。
サイトマップ関連
カスタマイズではないですが、ブログを始めるにあたり全然知らなかったので参考になりました。
BloggerのサイトマップをSearch Consoleに送信する方法 | Blogger101@ブロギングライフ
https://blogger101.blogging-life.com/2018/01/blogger-submit-sitemap-to-search-console.html
Blogger/Googleサイトのサイトマップ送信 - Google Search Consoleの使い方
https://www.howtonote.jp/google-search-console/sitemap/index7.html
WSLにシンボリックリンクを設定
$ ln -s /mnt/c/Users/Owner/workspace/sample ~/sample
こんな感じで設定したシンボリックリンクを解除するには、
$ unlink sample
でできました。
参考: シンボリックリンクの作成、更新、削除、権限変更をしました。 - Qiita
Windows側のフォルダ名をリネームしたので、それに合わせて変更したかったのですが、なんか下手するとシンボリックリンクの削除じゃなくてそのフォルダ自体を削除してしまいそうで怖かったです(笑)
var obj = {
a: 'aaa',
b: 'bbb',
c: 'ccc'
};
for (var i in obj) {
console.log(i + ': ' + obj[i]);
}
結果
a: aaa
b: bbb
c: ccc
値があるかどうかのチェック的なところでいつも迷うやつ。
undefined == null は true
undefined == null
true
undefined != null
false
0==null 0==undefined は false
0 == null
false
0 == undefined
false
0は値として受け付けたいけどnullやundefinedははじきたいという時に使える
arr = arr.filter(function(elem){
return elem != null;
});
これでもいけるっぽい?
arr = arr.filter(function(elem){
return !!elem;
});
と思ったけどこれだと0もはじくので少し挙動が異なる。
!!undefined
false
!!null
false
!!0
false
!!''
false
でもって、空文字 '' はnullとは等価にならない。(一つ目の方法では受け付けられる)
'' == null
false
0 と '' は等価
0 == ''
true
// 厳密等価演算子ならfalse
0 === ''
false
2019/08/29追記:現在は修正されているようです。詳細後述。
firebase deploy --only functions 実行時に Error: functions predeploy error: Command terminated with non-zero exit code4294963238 というエラーが発生した際の対処法。
C:\Users\***>firebase deploy --only functions
=== Deploying to '***'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
npm ERR! path C:\Users\***\%RESOURCE_DIR%\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open 'C:\Users\***\%RESOURCE_DIR%\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\***\AppData\Roaming\npm-cache\_logs\2018-11-18T04_48_00_356Z-debug.log
Error: functions predeploy error: Command terminated with non-zero exit code4294963238
firebase.json の中の $RESOURCE_DIR を %RESOURCE_DIR% に書き換える。
※Windows用の解決策。異なるOSを使ってチームで作業する場合などは使えない。
Try to replace $RESOURCE_DIR with %RESOURCE_DIR% in your firebase.json file.
C:\Users\***>firebase deploy --only functions
=== Deploying to '***'...
i deploying functions
Running command: npm --prefix "%RESOURCE_DIR%" run lint
> functions@ lint C:\Users\***\functions
> eslint .
+ functions: Finished running predeploy script.
i functions: ensuring necessary APIs are enabled...
+ functions: all necessary APIs are enabled
i functions: preparing functions directory for uploading...
+ Deploy complete!
Project Console: https://console.firebase.google.com/project/***/overview
2019/08/29追記: 久しぶりにFirebase を使ったところ、今は直っている様子。$RESOURCE_DIR のままでも上手くいきました。
Firebase CLI もWindowsもNode.jsも何もかもアップデートしているので、どれでうまくいくようになったのか分かりませんが…(苦笑)
上手くいった際のFirebase CLI のバージョンは 7.3.0 です。
C:\Users\***>firebase deploy --only functions
=== Deploying to '***'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
> functions@ lint C:\Users\***\functions
> eslint .
+ functions: Finished running predeploy script.
i functions: ensuring necessary APIs are enabled...
+ functions: all necessary APIs are enabled
i functions: preparing functions directory for uploading...
i functions: packaged functions (39.41 KB) for uploading
+ functions: functions folder uploaded successfully
i functions: creating Node.js 8 function myFunction(us-central1)...
+ functions[myFunction(us-central1)]: Successful create operation.
Function URL (myFunction): https://us-central1-***.cloudfunctions.net/myFunction
+ Deploy complete!
Project Console: https://console.firebase.google.com/project/***/overview
初めて独自ドメインを取得して、ロリポップのWebメーラーだけでなくGmailで使えるようにも設定できるというマニュアルを見つけて。で、設定してみたら良い感じにつまづいたので書き残しておきます。
Gmailの設定について / メール / マニュアル - レンタルサーバーならロリポップ!
こちらを参考に設定したのですが、
取得したメッセージのコピーをサーバーに残す。
任意です。チェックを外すと、Gmailで受信した場合メールサーバー上にあるメールが消失します。
この設定をOFFにしてこの後の「メールの送信設定」に進んだところ、下記の利用確認メールがGmailにしか届かず。(後で考えてみれば当然なのですが)
(10) 利用確認
確認コードを記載したメールが、Gmailに設定したメールアドレス宛に送信されます。
この時点では気づかず、マニュアルの画像はロリポップ!Webメーラーの方になっているのにな…?と不思議に思いながらもGmail側に届いたメールで確認手順を実行。
認証自体はエラー等出ずに完了するのですが、設定完了後に送信テストをしてみると送信できず。(送信ボタンを押しても何も反応しない)
一度「取得したメッセージのコピーをサーバーに残す」設定をONにして設定をやり直し、ロリポップ!Webメーラーの方に届いたメールからURLをクリックして認証すると送信できるようになりました。
その後は「取得したメッセージのコピーをサーバーに残す」設定はOFFにしても大丈夫でした。
Rails Tutorial を参考にしながら書いた下記のコードで RuboCop さんに指摘されたところに対処していきます。
指摘は2つ。
class StaticPagesController < ApplicationController
before_action :logged_in_user, only: [:my_page]
def home
...
end
def my_page
...
end
private
# before action
def logged_in_user
unless user_signed_in?
flash[:danger] = 'Please log in.'
redirect_to root_url
end
end
end
Rails Tutorial のサンプルアプリをベースに作り始めたアプリに、 Devise によるユーザー登録を追加したところ、全てのテストで下記のエラーが出るようになりました。
テストには Minitest を使用しています。
ActiveRecord::RecordNotUnique: ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: UNIQUE constraint failed: users.email: INSERT INTO "users" (...
emailの重複制約に引っかかっている様子…?
テスト環境のユーザーはどこに設定があるんだっけと思い返したところ、 test/fixtures/users.yml の内容がデフォルトで下記のようになっているのを発見。
one: {}
# column: value
#
two: {}
# column: value
おそらくこれのせいで、同じ値を使って one と two の二人のユーザーが作られる状態になっているのかと。 two を削除すると、とりあえずまたテストが動くようになりました。
one: {}
# column: value
この後ユーザーが絡んだテストを追加する際にちゃんとした対応が必要そうですが…取り急ぎ。