SwiftのKeychainAccessで保存した値をReactNativeで取得する

Swift製のアプリをRN化するにあたり、Swiftで

let keychain = Keychain(service: BUNDLE_IDENTIFIER)
keychain["token"] = token

したものをReactNativeで取りたかった。

最初に試したのは、oblador/react-native-keychain: Keychain Access for React Native

import * as Keychain from 'react-native-keychain'
Keychain
  .getGenericPassword()
  .then(credentials => {
    console.log(credentials)
  })
=> { service: BUNDLE_IDENTIFIER, username: {}, password: '2' }

passwordのところに取りたい文字列の最初の1文字だけが入ってくるというよくわからない状態になった。
Obj-cの中身を直す元気はなかったので別ライブラリを検討することに。

お次はclassapp/react-native-sensitive-info: Android Shared Preferences and iOS Keychain for React Native

import SInfo from 'react-native-sensitive-info';
SInfo.getItem('token', {
  sharedPreferencesName: BUNDLE_IDENTIFIER,
  keychainService: BUNDLE_IDENTIFIER
}).then(token => {
    console.log(token)
})

であっさり取れた。
もっと長々とハマるかと思っていたので助かった。

NginxとUnicornでRailsをサブパスで動かす

サブパス?サブURL?サブディレクトリ?何ていうのが適切かわからないけど。

https://github.com/gitlabhq/gitlabhq/blob/05692e0bfab58ddc4082394c711b50b27d89f4b6/config/unicorn.rb.example#L18

GitLabのソースではnon-rootと呼ばれていた。

https://github.com/gitlabhq/gitlabhq/blob/123b3ec432227f14f6baec292f1610e839b9f705/config.ru#L20

config.ruも拝借。

さらに、

config.assets.prefix = '/path/assets'

も追加。

Nginxはupstreamとlocation関連をコピペで追加して書き換えた。


Capistranoを使ってる場合、

set :assets_prefix, 'path/assets'

も必要だった。先頭のスラッシュいらない。(prefixなしでdeployしたことがあるとそっちで生成されたmanifestがあるからエラーにならず気づかなかった)

WordPressがデータベース接続確立エラーになっていた

/var/www/mysqld.logを見ると

170105  8:25:55 [ERROR] /usr/libexec/mysqld: Table './wordpress/wp_options' is marked as crashed and should be repaired

というエラーが。

https://macperson.net/mysql-table-repair/ のとおりにwp_optionsを修復したら復旧しました。
原因は不明。

ビックカメラのiOSタブレット福袋

19800円!(税抜き)中身は…

64GBがもう売ってないので正規料金がわかりづらいけど、50000円以上はしそうなのでだいぶお得。
今年は幸先良いスタートだった。

Circle CIでnode-sassが見つからないというエラー

Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 6.x

Found bindings for the following environments:
  - Linux 64-bit with Node.js 4.x

This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to build the binding for your current environment.

最初Circle CIデフォルトの4系でbuildしててあとから6にしたせいだった。
Rebuild without cacheで解消した。