Rails bundle installのconflictエラー対応メモ

ActiveAdminで使うGemを追記してbundle installしたときの対応メモ。

  1. bundle installコマンドを実行すると、以下のエラーが表示される。
Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
  1. Gemfileファイルで指定しているバージョンをすべて外して保存する。

  2. gem listコマンドでバージョン確認後、gem cleanupコマンドを実行する。

  3. bundle updateコマンドを実行する。そして解決。

Rails ActiveAdmin入れるとscaffoldしてもindexとかshowが生成されない

RailsでActiveAdmin入れたあとに、rails g scaffoldで自動生成すると、controllerにindexとかshowが生成されなくなる。

「InheritedResources::Base」というのがファイルの冒頭についてしまい、Rsourcesで定義されるindexやshowなどの定番のアクションの記述を省略しても、動作するようになってしまう。

これを解決するためには、application.rbファイルに以下を記述することが対応可能。

config.app_generators.scaffold_controller = :scaffold_controller

参考サイト

ActiveAdminを入れたら一緒にinherited resourcesも入ってscaffoldテンプレートが上書きされてしまう

Angular CLIインストール後にngコマンドが見つからない場合

MacのターミナルでAnagular用にnpm経由でインストールしてから、

npm install -g @angular/cli

CLIのngコマンドを入力したところ、コマンドが見つからないと表示された。

mymac:test user$ ng
-bash: ng: command not found

aliasで一時的にPATHを通す

ngコマンドのPATHが通っていないだけなので、AngularのCLI(ngファイル)がインストールされた場所を確認してから、以下を実行で解決。

alias ng="/usr/local/Cellar/node/9.7.1_1/lib/node_modules/@angular/cli/bin/ng"

上記の「ng=”〜”」は、インストールした場所によって変わるため、適宜変更する。「npm install -g @angular/cli」を実行時にインストール場所がターミナルに表示されているはずなので、それを入力する。

ただし、あくまで一時的な反映なので、永続的に反映しておきたい場合(ターミナル起動した場合)は、.bash_profileに設定が必要。

.bash_profileにalias設定する

ターミナル起動時に読み込まれるbash設定を開く。

vi ~/.bash_profile

.bash_profileに以下を追記する。

alias ng="/usr/local/Cellar/node/9.7.1_1/lib/node_modules/@angular/cli/bin/ng"

ついでに、「ll」で「ls -la」としたかったため、ついでにllのエイリアスも追記した。

alias ll="ls -la"

追記が完了したらviでファイルを保存して抜ける。そのあとに、.bash_profileをすぐに反映するために、sourceコマンドを実行する。

source ~/.bash_profile

これでターミナル起動時に、ngコマンドの実行(ついでにllコマンドも)ができるようになった。

参考サイト

MacでUSBのデータ通信端末が起動できない場合

MacBook ProにUSBのデータ通信端末を挿しても何も起きない、という現象が発生。
本来はUSBに挿した時に、自動的にデータ通信端末のアプリが自動インストール&フォルダが開くのですが、何も起きない。自分のケースは管理者権限がない(?)せいか、USB挿しても自動起動できなかったようでした。詳しい原因はいまいちわかりませんが、「これを一通り試してみるとよい」というのをまとめました。

■やりたいこと
・MacBook Proにデータ通信端末を挿してインターネット接続したい
・(どのメーカーもだいたいこんな感じの挙動)データ通信端末をUSBに挿すと、自動的に起動するためのアプリが自動で開いたり、アプリが入っているフォルダが開いたりするので、そのアプリを起動したい

■環境
・MacBook Pro 2016 late, macOS Sierra 10.12.6
・1個目 USBのデータ通信端末 SoftBank 604HW
・2個目 USBのデータ通信端末 au Speed Stick U01
・AUKEY USB Type-Cハブ 4ポート

■試すとよいこと
・データ通信端末が正常に動くのかどうか、Windows機、その他のMacで動作確認
→ 動作すればデータ通信端末自体は正常、Mac側の設定の可能性あり

・USBハブの違うポートに挿し替えてみる、Macの違うポートに差し替えてみる

・再起動する

・ウィルススキャンを無効にする
→ Symantec Endopoint Protectionの場合だと、「ウィルスとスパイウェアの対策機能を無効にする」と「ネットワーク脅威防止を無効にする」を選択する

・USB認識しているか確認する
→ システムレポートでUSB認識してるか確認する。以下参考サイト
macOS Sierra: USB 装置が動作しない場合

・スーパーユーザーでログインしてUSBを挿してみる
→ 今回はこれが原因のようでした。一般ユーザーでログインしていて、USBは認識しているがUSB挿してもデータ通信するためのアプリフォルダが自動的に開かない状況。以下の手順で解決した。
1)一般ユーザーアカウントでログインしてデータ通信端末をUSBに挿す → 何も起きない
2)ユーザーユーザーアカウントでログインし直してデータ通信端末をUSBに挿す → 何も起きない(一回もログインしたことなくてプロファイル設定とか走った。USB挿しても何も起きなかったけどこれが決め手っぽい)
3)一般ユーザーアカウントでログインし直すデータ通信端末をUSBに挿す → データ通信するためのアプリが自動的に開いてアプリフォルダにインストールもされる
– 以上で解決 –

■備考
・auもSoftBankもどちらもUSB挿しても何も起きなくてハマった。USB接続の無効設定なんかも特にしてないはずだしな・・・。いまいち挙動がつかめない。

・USB認識しない場合の対策として、以下の兆候を見るとSMCリセットは直接関係しなそう

—以下、引用 ——————————————————————————

SMC のリセットが必要な場合の兆候

以下の症状が認められる場合は、SMC のリセットが必要だと考えられます。
  • コンピュータへの負荷が高くなく、正しく通気されているにもかかわらず、コンピュータのファンが高速で回転する。
  • キーボードのバックライトが正しく機能しない。
  • ステータスランプ (SIL) (搭載されている場合) が正しく機能しない。
  • バッテリーランプ (搭載されている場合) が正しく機能しない (バッテリー内蔵の Mac ノートブックの場合)。
  • ディスプレイのバックライトが周囲の明るさの変化に正しく反応しない。
  • Mac が電源ボタンを押しても反応しない。
  • Mac ノートブックが蓋を開閉したときに正しく反応しない。
  • Mac が予期せずスリープ状態になったりシステム終了したりする。
  • バッテリーが適切に充電されない。
  • MagSafe 電源アダプタの LED (搭載されている場合) が適切な動作状態を示していない。
  • CPU に異常に負荷がかかっているわけでもないのに、Mac の動作速度が通常よりも遅い。
  • ターゲットディスプレイモード対応のコンピュータで、思うようにターゲットディスプレイモードにしたり、ターゲットディスプレイモードを解除したりできない。または、予期せずターゲットディスプレイモードになったり、ターゲットディスプレイモードが解除されたりする。
  • Mac Pro (Late 2013) の入出力ポート付近のイルミネーションが、コンピュータを動かすと点灯しない。

——————————————————————————
 引用元:Mac の SMC (システム管理コントローラ) をリセットする方法

Publifyでユーザー登録するとCan’t be blankエラーの対応

Ruby5でPublify(2017/08/06時点でGitHubからDL)構築してユーザー登録したら、「email can’t be blank」(E-mailアドレスが空白だから登録できない)と言われる。原因はGemのDevise側の設定(?)の問題のようだ。

■ログを見ると、

Parameters: {“utf8″=>”✓”, “authenticity_token”=>”3yQzraJPxAEJpMt3OnBeorf3tTByIIinlMo3QVaIQc0Azyp1BCQcGok+V1/RolwXdKjVR0z4hRhuIyg+qg032w==”, “user”=>{“login”=>”username”, “email”=>”username@gmail.com”, “password”=>”[FILTERED]”, “password_confirmation”=>”[FILTERED]”}, “commit”=>”Sign up”}
Unpermitted parameter: email

と出力され、E-mailはちゃんと入力されている。「Unpermitted parameter: email」という出力があるので、これが原因っぽい。

■Stack Overflowで調べると、Deviseの「strong parameters」を参照せよ、とのことで、
ruby on rails – Devise error: email can’t be blank – Stack Overflow

■DeviseのGitHubの同項目の書き方を参照する。
https://github.com/plataformatec/devise#strong-parameters

【書き方】

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
  end
end

■(結論)Publifyの app/controllers/application_controller.rbを以下のように変更した。

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    added_attrs = [:username, :email, :password, :password_confirmation, :remember_me]
    devise_parameter_sanitizer.permit :sign_up, keys: added_attrs
    devise_parameter_sanitizer.permit :account_update, keys: added_attrs
  end
end

再度、ユーザー登録をしたら無事に通った。

MacでUSBメモリー刺してゴミ箱を空にできない場合

USBメモリーのファイルを削除するとゴミ箱に移動されるため、ゴミ箱を空にしないとUSBメモリーの.Trashesとかのディレクトリにファイルが残ったままになり、USBメモリーのディスク容量も占有したままになる。
確実にゴミ箱を空にする、とかターミナルで削除する、とか色々な方法があるが、それでもだめだった場合は、USBメモリーを初期化することで解決できる。

アプリケーション → ユーティリティ → ディスクユーティリティ → USBメモリーの下のディスクを右クリックして初期化を実行すればOK

ESPr Developer(WROOM02)で書き込みできない現象

■現象
 Arduino IDEで書き込みすると以下のようなエラーが出る。
————————————————————————————————————————
Arduino: 1.6.12 (Mac OS X), Board: “Generic ESP8266 Module, 160 MHz, 80MHz, DIO, 115200, 4M (3M SPIFFS), nodemcu, Serial, All”

Sketch uses 227,745 bytes (21%) of program storage space. Maximum is 1,044,464 bytes.
Global variables use 33,120 bytes (40%) of dynamic memory, leaving 48,800 bytes for local variables. Maximum is 81,920 bytes.
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
————————————————————————————————————————

■原因
自分の場合は以下の2パターンありました。
パターン1: TX, RXのピンに繋いだまま書き込み。リセットしてからピンを接続せずに書き込みしたらOKだった。
パターン2: 手動リセットの設定をしていた。リセットの儀式をしたうえで、Arduino IDE -> Tools -> Reset Method: CK になっていたのをnodemcuにしたら書き込めた。

■参考になるブログ
ESPr Developer(ESP-WROOM-02開発ボード)で “warning: espcomm_sync failed” と表示される場合の対処 
Arduinoで書き込みできなくなった原因をメモ