Ruby1.9.1とgem1.9.1の設定
参考(本件とは異なりますが、一応知識として・・・)
http://arika.org/2010/08/30/ruby-1-9-2-and-rubygems-1-3-7-and-gem-path
目的
以前、requireエラーが出ていたので色々調べた結果、
バージョン管理のミスでした。
$ruby -e 'p Gem.path'
[".gem/ruby/1.9.1", "/var/lib/gems/1.9.1"]
ここで、Gem.pathが「/var/lib/gems/1.9.1」を参照している。
ところが、「/var/lib/gems/1.9.1」先がなかった・・・。
rubyのバージョンは、1.9.1にしたけど
gemは1.8のバージョンのまま使っていた。
$gem list
$gem1.9.1 list
で比較すると、標準がgem1.8になっているのに気づく。
バカだ〜と思い鬱になりながらも
気を取り直して、
aptitudeとupdate-alternativesコマンドを使って設定!
rails関連、/usr/bin/*1.8*関係も調べて、
「update-alternatives」で管理するようにした。
Carrierwave
目的
ファイルのアップロード
参考
インストール
gem 'carrierwave'
r g scaffold paint name:string
r g uploader image
r g migration add_image_to_paints image:string
app/models/paint.rb
attr_accessible :name, :image
mount_uploader :image, ImageUploader
app/views/paints/_form.html.erb
<%= form_for @paint, :html => {:multipart => true} do |f| %>
(省略)
<%= f.file_field :image %>
(省略)
アップロードした画像を表示する
app/views/paints/show.html.erb
image:
<%= image_tag(@paint.image_url) if @paint.image? %>
実行
実行すると、画像ファイルがアップされます。
保存先
public/uploads/gallery/image/1/画像ファイル名
Rubyでシリアル通信
参考
インストール
gem install serialport
シリアル通信を行う
require 'rubygems'
gem 'serialport','>=1.0.4'
require 'serialport'# 9600bps, 8bit, stopbit 1, parity none
sp = SerialPort.new('/dev/tty.usb-serialdevice', 9600, 8, 1, 0)
line = sp.gets
a << 'a'
a << 'b'
sp.puts a
が動かない。
「gem list」にはserialportがあるのに、
ロードできない?
Rails3.0 で Devise と CanCan を動かす
目的
認証と権限
参考
環境
- gem 1.3.7
- Rails 3.0.5
- Devise 1.1.8
- CanCan 1.6.2
内容
Welcome(認証)->TOP(権限にて表示を変更)
Welcomeページの作成、deviseの設定は省略します。
lounge1975さんの日記を参考にいたしました。
Gemfile
gem 'devise'
gem 'cancan'
$ bundle install
Userモデルとビューの作成
$ r g devise:install
$ r g devise users
$ r g devise:views
$ r g migration add_role_to_users role:string
$ rake db:migrate
$ r g cancan:ability
app/models/users.rbに以下を追加
(省略)
attr_accessible :role
ROLES=%w[admin author]
(省略)
app/models/ability.rbに以下を追加
(省略)
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role == "admin"
can :manage, :all
else
can :read, :all
end
end
(省略)
app/views/devise/registrations/new.html.rbと
app/views/devise/registrations/edit.html.rbに以下を追加
に以下を追加
(省略)
<%= f.label :role %>
<%= f.collection_select :role, User::ROLES, :to_s, :humanize%>
(省略)
app/views/hoges/index.html.erbを編集(ここではadminだけにEditを表示させます)<% if can? :manage, hoge %><%= link_to 'Edit', edit_hoge_path(hoge) %><% end %>
実行すると、'Admin'でのユーザ登録者のみが
「Edit」できるようになります。
その他のユーザは「Edit」できません。
あと書き
Deviseで認証、cancanは権限です。cancanは権限を継承したり、代理も可能そうなので、おもしろそうだと感じました。
はじめてのブログ
初めてのブログです。
自分の勉強メモとして、いろいろと載せていきたいと思います。
色々すぎて、浅く広いかもしれませんが、
たまに深くいければと思います。