itamaeでsidekiqが使えるようにredisをremiからインストールする
問題
railsでActionCableを使ってアプリを作っていて、ActiveJobを処理させるためにsidekiqを導入しようとしたら、 epel
だとredisのバージョンが足りなかった。
github.com
# recipes/redis.rb package "redis" do options "--enablerepo=epel" action :install end service "redis" do action %i(enable start) end
解決
remi
から取ってくるようにするために、レシピを以下のように変更。
# recipes/redis.rb package "epel-release" do action :install end package "http://rpms.famillecollet.com/enterprise/remi-release-#{node[:platform_version][0]}.rpm" do not_if "rpm -q remi-release" end package "redis" do options "--enablerepo=remi" action :install end service "redis" do action %i(enable start) end
これでうまくsidekiqが起動、処理してくれるようになった🔪🔪🔪
gretelって名前がメルヘンだけどパンくずリスト作りに便利
パンくずリストの実装って結構面倒くさそうだなって思ってたけど、gretelはなんて素敵gemなんだろうと思った。 github.com
使ってみた
READMEにもかいてあるけど、おもむろに
Gemfile gem "gretel"
と書いて bundle install
次に設定ファイルを rails generate gretel:install
で生成。
生成される config/breadcrumbs.rb
に対して色々と設定を入れていけば良い感じ。
config/breadcrumbs.rb # ページのルート crumb :root do link <表示させたい文字列>, root_path end # 以下みたいなのをパンくずリストに表示させたい塊に対して書く crumb :<パンくずのシンボル用文字列> do link <表示させたい文字列>, <リンク先パス> end
のように記述する。
あとは各ページに対して
<% breadcrumb :<パンくずのシンボル用文字列> %>
とパンくずリストを表示させたい箇所で記述するのと、
app/views/layouts/application.html.erb <%= breadcrumbs style: :bootstrap" %>
と書いてしまえば bootstrap
スタイルの素敵なパンくずができちゃいます。便利ですね!
React&React Native入門者の会に参加してきた
React&React Native入門者の会というものに参加し、面白そうだと思ってたけど全然触れてなかったReactについて色々と話を聞いてきたので雑まとめ。
Reactive Nativeのおかげで爆速でNativeアプリが書ける話 @prologさん
アンドロイドアプリ作りたい
- 豊富なライブラリ
- awesome-react-native
- react-native-grifted-chat ➡︎ LINE風のチャットが実装できる
- react-native-action-button
- react-native-dialogs
Reactの基礎 @minakaco0301さん
https://github.com/minakaco0301/react_native_sample
- チュートリアルの話っぽい。あとで読んでみよう。
React Nativeを触り始めて@diskshimaさん
ListViewあるあるらしい
更新されない場合はCloneWithRawsを呼びましょう
React JSのオープソースを学び倒して脱初心者を目論んでいる話 @tkow39
- リアルなコードを書こう
- fillはfluxの良い実装
Ajax in React with axios @takanorip
Reactでpromiseなajax
- Promise ES2015を使ってajaxを実装
- JavaScript Promiseの本
- axios
- クロスドメインはNG
感想
- 全体的に、名前の通り入門者レベルの話だった気がした。
- とりあえずawesome-reactとかのプロジェクトを色々コードリーディングしていって、知識を取り入れられたらと思った。
【Rails】guard-livereloadを使ってみる
きっかけ
ReactJSの開発環境を設定している動画で、livereloadでサクサク開発をしているのが紹介されているのを見て、面白そうだなと思ってやってみました。
guard-livereload
RSpecとか更新時に色々と自動化してくれるやつのlivereload版。 viewファイルやCSSやJSなどといったファイルが更新された際に自動的にブラウザをリロードしてくれる。
インストール
Gemfile
group :development do gem "guard-livereload" end
と書き、
bundle install
でインストール。
guard init livereload
でどのファイルを更新した時にリロードするのかといった設定を書くためのGuardfile
を生成。
中身としては
# file needing a full reload of the page anyway watch(%r{app/views/.+\.(#{rails_view_exts * '|'})$}) watch(%r{app/helpers/.+\.rb}) watch(%r{config/locales/.+\.yml})
などといったwatch~~
な箇所が更新されたらリロードがされるようにデフォルトで生成されるファイルでは記述されている。
連携
chromeを使っているなら下から拡張機能をインストール。 chrome.google.com この状態で
bundle exec guard
を実行すると
INFO - LiveReload is waiting for a browser to connect.
という表示が出るので、
rails s
でサーバを立ち上げて、ブラウザでアクセスすると
INFO - Guard is now watching at [project名]
となり、これ以降にviewファイルなどを更新すると、自動的にリロードされるようになる。
Support
Guard::LiveReload is looking for a new maintainer. Please contact me if you're interested.
なんて書いてあって少し不安感あるけど、他にサクッと入れられるものはあるのだろうか。
【Rails】Time型で時間の条件だけを指定して取得
DBはSQLite3を使用
問題
id: 1, starttime: 2000-01-01 10:00:00 +0900 id: 2, starttime: 2000-01-01 10:00:00 +0900
このようなレコードがあった時に
Model.where(starttime: Time.parse("2000-01-01 10:00:00 +0900"))
ではid: 1
のみの取得となってしまった時があった。
調査
Model.find(1).starttime.to_i => 946688400 Model.find(2).starttime.to_i => 946688400
は両方同じものが返ってくる。 ということはDB側で値を比較する際に何かが起きている?
解決
とりあえずこれを
Model.where("time(starttime) == ?", Time.parse("2000-01-01 10:00:00").strftime('%H:%M:%S'))
と記述して、DB側で文字列化し、比較することによって両方とも取得ができた。 でもこれってDBの種類によって挙動が変わる可能性ないのかな?まだまだ調査が必要が感じがする。