CocoaPodsでpod installしたらundefined method 'to_ary'に出くわした
アプリを作っていて、新しいライブラリを導入するためにいつものようにPodfileに書いて、pod installしたら掲題のエラーが起きました。 他のライブラリでは問題なくできていたのに急に!?という思いに駆られ、調べていたところ、以下のissueが見つかりました。
undefined method `to_ary' #4891
読んでみるとどうやらrubyのバージョンが2.3以上の場合、起きることがあるようだ、ということがわかり、rubyのバージョンを調べてみると案の定。
╰─$ ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin14]
対応策としてはCocoaPods 1.0.0をインストールすることらしい。まだβ版(2016/4/2時点)なのでうーん、と思いながらアップデート作業。
// なんかあると怖そうだったので一旦消す ~ gem uninstall cocoapods ~ gem install cocoapods --pre ~ pod setup
そして再度pod install
を実行すると見事成功。
ちょっとハマったので他の人の役に立てればと。
Rails runnerを使ってスクリプトを実行する
Railsを使っている時に、普通の処理とは別だけどもRailsの機能も使いつつ単独のスクリプト実行したい(バッチ処理とか、アプデに伴う諸々のデータの更新など)、と思ったことがある人は多いのではないでしょうか?そんな時に役立つのがRails runnerです。
はじめに
railsのルートディレクトリ直下にscripts
というフォルダを用意し、その中に実行したいファイルを作成します。
今回は20160322_passion.rb
というファイルを作成します。内容は以下です。この中のスクリプトはRailsの機能も使用可能です。
class Passion def self.execute put 'Do you have passion?' end end Passion.execute
スクリプトを実行する
作成したスクリプトは、以下のコマンドで実行します。
~ bundle exec rails runner scripts/20160322_passion.rb
環境毎に実行したい時
stagingやproduction環境下でも実行したい場合があるでしょう。その場合は以下のように-e
オプションをつけて実行します。
bundle exec rails runner -e environment_here scripts/20160322_passion.rb
参考
gitでmerge済みのlocal branchを一括で削除する
よくローカルに溜め込みすぎて、毎度調べているので、自分用のメモとして。
git branch --merged | grep -v '^*' | xargs git branch -d
参考
SwiftでxibをカスタムViewとして使用する時の諸々
SwiftでStoryboard等を使っている場合、すべてのViewに関する処理を、同一のViewControllerに書くと、とても長くなってしまいます。そのため、Viewの切り出しを行う方が多いかと思います。以下でその分割方法について書いていきます。
xibをカスタムViewとして使用する方法
- UIView(以下
CustomView.swift
と呼ぶ)とxib(以下CustomView.xib
と呼ぶ)のファイルを作成する CustomView.xib
で配置したViewのFile's OwnerにCustomViewを指定するCustomView.xib
で配置したViewをCustomView.swift
にcontentView
という名前で紐付けるCustomView.swift
にxibを読み込むための処理を記述する(以下参照)
import UIKit class CustomView: UIView { @IBOutlet var contentView: UIView! required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder)! loadXib() } private func loadXib() { NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil) contentView.frame = CGRectMake(0, 0, frame.size.width, frame.size.height) addSubview(contentView) } }
あとは実際に使うところでUIViewのClassをCustomViewにすれば動くかと思います。
参考
Storyboard + AutoLayoutの環境下でUIScrollViewを配置する設定
Storyboard + AutoLayoutの環境下でUIScrollViewを配置するまでに必要な設定を書いていきます。
- Storyboard上で、UIViewControllerを配置
- UIViewControllerのUIView(以下①と呼ぶ)の上にUIScrollView(以下②と呼ぶ)を乗せて、Constraintsを上下左右0に設定
- UIScrollViewの上にUIView(以下③と呼ぶ)を乗せ、②③を選択し、equal widthにチェックを入れる
- ③のHeightにConstraintsを設定する
- ③にConstraintsを上下左右0に設定
- 該当のUIViewControllerのAdjustScrollViewInsetsのチェックを外す
簡潔ながら以上となります。 高さを変えたい時は③のHeightのConstraintsをいじるようにすれば大丈夫です。