Snake's Home

rails实现文件上传

最近一直在折腾上传,对mongo的上传搞伤脑经。

rails 上传主要是一个gem carrierwave
先生成一个项目,然后对Gemfile做点修改,如下:

1
2
3
4
5
6
7
source 'https://ruby.taobao.org'

gem 'mongoid', '~> 4.0.0'
gem 'carrierwave-mongoid'
gem 'carrierwave', '0.6.2'
gem 'mini_magick' #不使用rmagick,占内存
gem 'fog' #用来在生产环境中上传图片

然后安装

1
2
bundle install
rails g mongoid:config

将会出现:

1
This generates config/mongoid.yml

那么,之前那个默认的database.yml配置文件已经没用了,别舍不得,去./config目录里面随手删掉它吧!

修改config/application.rb文件,先删掉

1
require "rails/all"

1
config.active_record.raise_in_transactional_callbacks = true

这两行,再添加以下几行:

1
2
3
4
5
require "action_controller/railtie"
require "action_mailer/railtie"
# require "active_resource/railtie" # Comment this line for Rails 4.0+
require "rails/test_unit/railtie"
require "sprockets/railtie" # Uncomment this line for Rails 3.1+

修改config/environments/development.rb文件,将里面所有涉及到active_record的配置项都注释掉:

1
config.active_record.migration_error = :page_load

在config/initializers/目录下新建一个mongoid.rb文件,添加一行:

1
Mongoid.load!("config/mongoid.yml", :production)

然后启动mongo服务:

1
mongod --config /usr/local/etc/mongod.conf

生成一个scaffold

1
2
3
rails generate scaffold User name:string nick:string avatar:string

rails generate uploader Avatar

未完待续。。。