diff --git a/Gemfile b/Gemfile index d40e7b65f..6221af125 100644 --- a/Gemfile +++ b/Gemfile @@ -3,31 +3,40 @@ source 'http://gemcutter.org' gem 'rails', '3.0.0.beta4' gem 'bundler', '0.9.26' -gem 'mongo_mapper', :git => "http://github.com/BadMinus/mongomapper.git" -gem 'devise', :git => "http://github.com/BadMinus/devise.git" -gem 'jnunemaker-validatable', :git => "http://github.com/BadMinus/validatable.git" + +gem 'thin' + +#Security +gem 'gpgme' +gem 'devise', :git => 'http://github.com/BadMinus/devise.git' + +#Mongo +gem 'mongo_mapper', :git => 'http://github.com/BadMinus/mongomapper.git' +gem 'jnunemaker-validatable', :git => 'http://github.com/BadMinus/validatable.git' gem 'mongo_ext' gem 'bson_ext' -gem "haml" -gem 'roxml', :git => "git://github.com/Empact/roxml.git" - -gem 'gpgme' -gem 'pubsubhubbub' -#mai crazy async stuff -#gem 'em-synchrony', :git => 'git://github.com/igrigorik/em-synchrony.git', :require => 'em-synchrony/em-http' -gem 'em-http-request',:git => 'git://github.com/igrigorik/em-http-request.git', :require => 'em-http' -#gem 'rack-fiber_pool', :require => 'rack/fiber_pool' -gem 'addressable', :require => "addressable/uri" -gem 'em-websocket' -gem 'thin' +#Views +gem 'haml' gem 'will_paginate', '3.0.pre' +gem 'roxml', :git => 'git://github.com/Empact/roxml.git' + +#Standards +gem 'pubsubhubbub' + +gem 'em-http-request',:git => 'git://github.com/igrigorik/em-http-request.git', :require => 'em-http' +gem 'addressable', :require => 'addressable/uri' +gem 'em-websocket' + +#File uploading +gem 'carrierwave', :git => 'git://github.com/rsofaer/carrierwave.git' , :branch => 'master' #Untested mongomapper branch +gem 'image_science' group :test do gem 'rspec', '>= 2.0.0.beta.17' gem 'rspec-rails', '2.0.0.beta.17' - gem "mocha" + gem 'mocha' gem 'webrat' gem 'redgreen' gem 'autotest' @@ -36,10 +45,10 @@ group :test do end group :development do - gem "nifty-generators" - gem "ruby-debug" + gem 'nifty-generators' + gem 'ruby-debug' end group :deployment do - gem 'sprinkle', :git => "git://github.com/rsofaer/sprinkle.git" + gem 'sprinkle', :git => 'git://github.com/rsofaer/sprinkle.git' end diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb new file mode 100644 index 000000000..6239603ec --- /dev/null +++ b/app/controllers/photos_controller.rb @@ -0,0 +1,36 @@ +class PhotosController < ApplicationController + #before_filter :authenticate_user! + + def index + @photos = Photo.paginate :page => params[:page], :order => 'created_at DESC' + + end + + def create + @photo = Photo.new(params[:photo]) + @photo.person = current_user + + if @photo.save + flash[:notice] = "Successfully uploaded photo." + redirect_to photos_url + else + render :action => 'new' + end + end + + def new + @photo = Photo.new + end + + def destroy + @photo = Photo.where(:id => params[:id]).first + @photo.destroy + flash[:notice] = "Successfully deleted photo." + redirect_to root_url + end + + def show + @photo = Photo.where(:id => params[:id]).first + + end +end diff --git a/app/models/photo.rb b/app/models/photo.rb new file mode 100644 index 000000000..3e8407a81 --- /dev/null +++ b/app/models/photo.rb @@ -0,0 +1,6 @@ +class Photo + require 'carrierwave/orm/mongomapper' + include MongoMapper::Document + + mount_uploader :image, ImageUploader +end diff --git a/app/uploaders/image_uploader.rb b/app/uploaders/image_uploader.rb new file mode 100644 index 000000000..05ba9614a --- /dev/null +++ b/app/uploaders/image_uploader.rb @@ -0,0 +1,17 @@ +class ImageUploader < CarrierWave::Uploader::Base + include CarrierWave::ImageScience + + storage :grid_fs + + def store_dir + "files/#{model.id}" + end + + def extension_white_list + %w(jpg jpeg gif png) + end + + version :small_thumb do + process :resize_to_fill => [100,100] + end +end diff --git a/config/initializers/carrierwave.rb b/config/initializers/carrierwave.rb new file mode 100644 index 000000000..6c68ccdad --- /dev/null +++ b/config/initializers/carrierwave.rb @@ -0,0 +1,6 @@ +CarrierWave.configure do |config| + config.grid_fs_database = "#diaspora-#{Rails.env}" + config.grid_fs_host = 'localhost' + config.grid_fs_access_url = "/GridFS" + config.storage = :grid_fs +end diff --git a/config/routes.rb b/config/routes.rb index e1ca70581..b49c9afae 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,6 +5,7 @@ Diaspora::Application.routes.draw do |map| resources :status_messages resources :comments resources :requests + resources :photos match 'warzombie', :to => "dashboards#warzombie" match 'zombiefriends', :to => "dashboards#zombiefriends" diff --git a/spec/fixtures/bp.jpeg b/spec/fixtures/bp.jpeg new file mode 100644 index 000000000..33f75aa04 Binary files /dev/null and b/spec/fixtures/bp.jpeg differ diff --git a/spec/models/photo_spec.rb b/spec/models/photo_spec.rb new file mode 100644 index 000000000..48ad321c3 --- /dev/null +++ b/spec/models/photo_spec.rb @@ -0,0 +1,13 @@ +require File.dirname(__FILE__) + '/../spec_helper' + +describe Photo do + it 'should upload a photo to GridFS' do + + photo = Photo.new + file = File.open('/spec/fixtures/bp.jpeg') + photo.image = file + photo.save.should == true + + end + +end