- 浏览: 698316 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
qgm168:
...
Ruby中HmacMD5加密 -
lucky_god:
感谢楼主,写的很详细!
Redhat安装gem包报错“no such file to load — zlib”以及ruby的openssl扩展等错误的修正 -
liaozhaijk:
$("某一个dom").change() ...
jquery绑定input 文本域(text),检测值的变化 -
avalonzst:
...
Mysql启动失败Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysq -
zdz8207:
非常感谢,我的也是磁盘满了导致的问题,顺便分享下查看磁盘的命令 ...
Mysql启动失败Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysq
根据官网的提示按照下面步骤依次进行,官网上的介绍文章用的是mongo_mapper但是我在网上查资料的时候发现很多人都是推荐mongoid的,本着学习,多学一点没坏处的想法,就硬着头皮弄了一遭,过几天再试一试mongoid:
安装rails
配置应用程序
很重要的一步就是要跳过这个active-record
如果是没有进行上一步而直接创建了rails项目,可以通过修改 config/application.rb 文件
同时要确保generate命令,不要去对对象关联active_record的orm
安装gem初始化数据库
Gemfile中添加
接下来运行指令安装gem
如果提示没有bundle那么请先安装
数据库:
创建文件config/initializers/mongo.rb添加内容:
测试配置
创建文件 lib/tasks/mongo.rake 添加内容:
--------------------------------------------------------------------
中间遇到的问题以及解决过程
问题一、运行rails s ,出现错误提示:
提示缺少gem包
安装之后,再运行,仍然出现上面这个错误
在Gemfile中添加
执行rails s
**Notice: C extension not loaded 这个问题就不存在了
还剩下JavaScript runtime这个错误,查了一下原因是:
Windows下默认有Javascript引擎,所以window下不会有这个错误。Linux下才有这个错误,一般只要第一个项目安装即可,以后的项目不用重复安装。
而且这个错误是由development环境中的assets包引起的,注释掉
就不用安装’execjs’和’therubyracer’了。
当然这不是一个好办法
如果不注释,需要在Gemfile中添加
或者是安装一个Node.js
问题二:配置文件中hash的问题
ps:关于hash,因为工作原因,我本地既有ruby1.8又有ruby1.9
这个config/initializers/wrap_parameters.rb文件,如果是在ruby1.8.7中会出现如下错误:
这个在ruby1.9.2环境中是没问题的
1.8环境下需要改成
另外session_store.rb这个文件中也会出现这个类似的问题:
同理在1.9中没问题,1.8中要改成:key=>'_project_name_session'
上面这个问题突出的问题是:ruby1.8于ruby1.9在hash定义上出现的变化
#新的语法
#旧的语法
1.9.2同时兼容以前1.8.7的写法
----------------------------------------------------------------------------
接下来继续做那个demo
首先做一下首页的显示
运行指令
创建index的控制器以及其他代码
先写测试
在控制器的测试文件中添加
运行,肯定跑不通,写代码来实现功能
删除public下面的index.html文件
配置以下路由,指定新的主页路径
在IndexController中添加主页action
在app/view/index/下面添加index.erb文件
运行rake test,显示错误
这是测试用例的问题
把test_helper.rb中调用测试用例的代码注释掉
再次运行测试rake test
访问主页成功
ps:上面的controller基本上跟mongo没啥关系,但是考到功能测试出现的这fixtures还是把这个放上来了
模型
创建一个名为user的model:执行命令
orm这个参数如果不写,会出现这个错误
执行完成之后显示生成的文件:
如果不想每一次都写这个--orm
在config/application.rb中添加:
user.rb代码
user_test.rb代码
# encoding: utf-8
require 'test_helper'
运行单元测试
rake test:units 发现错误
Errors running test:units!
查看堆栈得到信息
提示在链接之前先配置:
此配置文件的内容是:
rake test;units是没有问题了
另外还写了一个users_controller的增删该查以及它的测试,跟mysql关联的写法没有任何区别,完全一样。
测试项目源码地址
https://github.com/chinacheng/mongodb_project
安装rails
gem install rails
配置应用程序
很重要的一步就是要跳过这个active-record
rails new project_name --skip-active-record
如果是没有进行上一步而直接创建了rails项目,可以通过修改 config/application.rb 文件
# require "rails/all" # 删除掉 # 添加下面 require "action_controller/railtie" require "action_mailer/railtie" require "active_resource/railtie" require "rails/test_unit/railtie"
同时要确保generate命令,不要去对对象关联active_record的orm
# Configure generators values. Many other options are available, be sure to check the documentation. # config.generators do |g| # g.orm :active_record # g.template_engine :erb # g.test_framework :test_unit, :fixture => true # end
安装gem初始化数据库
Gemfile中添加
source 'http://gemcutter.org' require 'rubygems' require 'mongo' gem "rails", "3.1.0" gem "mongo_mapper"
接下来运行指令安装gem
bundle install
如果提示没有bundle那么请先安装
gem install bundle
数据库:
创建文件config/initializers/mongo.rb添加内容:
MongoMapper.connection = Mongo::Connection.new('localhost', 27017) MongoMapper.database = "project_name_#{Rails.env}" if defined?(PhusionPassenger) PhusionPassenger.on_event(:starting_worker_process) do |forked| MongoMapper.connection.connect if forked end end
测试配置
创建文件 lib/tasks/mongo.rake 添加内容:
namespace :db do namespace :test do task :prepare do # Stub out for MongoDB end end end
--------------------------------------------------------------------
中间遇到的问题以及解决过程
问题一、运行rails s ,出现错误提示:
**Notice: C extension not loaded. This is required for optimum MongoDB Ruby driver performance. You can install the extension as follows: gem install bson_ext If you continue to receive this message after installing, make sure that the bson_ext gem is in your load path and that the bson_ext and mongo gems are of the same version. gems/ruby-1.9.2-p180/gems/execjs-1.3.0/lib/execjs/runtimes.rb:50:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable) from /home/chinacheng/.rvm/gems/ruby-1.9.2-p180/gems/execjs-1.3.0/lib/execjs.rb:5:in `<module:ExecJS>' from /home/chinacheng/.rvm/gems/ruby-1.9.2-p180/gems/execjs-1.3.0/lib/execjs.rb:4:in `<top (required)>'
提示缺少gem包
gem install bson_ext
安装之后,再运行,仍然出现上面这个错误
在Gemfile中添加
gem "bson_ext"
执行rails s
**Notice: C extension not loaded 这个问题就不存在了
还剩下JavaScript runtime这个错误,查了一下原因是:
Windows下默认有Javascript引擎,所以window下不会有这个错误。Linux下才有这个错误,一般只要第一个项目安装即可,以后的项目不用重复安装。
而且这个错误是由development环境中的assets包引起的,注释掉
# Gems used only for assets and not required # in production environments by default. #group :assets do # gem 'sass-rails', " ~> 3.1.0" # gem 'coffee-rails', "~> 3.1.0" # gem 'uglifier' #end
就不用安装’execjs’和’therubyracer’了。
当然这不是一个好办法
如果不注释,需要在Gemfile中添加
gem 'therubyracer' gem 'execjs'
或者是安装一个Node.js
问题二:配置文件中hash的问题
ps:关于hash,因为工作原因,我本地既有ruby1.8又有ruby1.9
这个config/initializers/wrap_parameters.rb文件,如果是在ruby1.8.7中会出现如下错误:
syntax error, unexpected ':', expecting kEND (SyntaxError) wrap_parameters format: [:json]
这个在ruby1.9.2环境中是没问题的
1.8环境下需要改成
wrap_parameters :format=>[:json]
另外session_store.rb这个文件中也会出现这个类似的问题:
syntax error, unexpected ':', expecting $end (SyntaxError) ...ion_store :cookie_store, key: '_project_name_session'
同理在1.9中没问题,1.8中要改成:key=>'_project_name_session'
上面这个问题突出的问题是:ruby1.8于ruby1.9在hash定义上出现的变化
#新的语法
h = { a: 1, b: 2 }#
#旧的语法
h = { :a=> 1, :b=>2 }# 返回{:a=>1, :b=>2}
1.9.2同时兼容以前1.8.7的写法
----------------------------------------------------------------------------
接下来继续做那个demo
首先做一下首页的显示
运行指令
rails g controller index
创建index的控制器以及其他代码
先写测试
在控制器的测试文件中添加
require 'test_helper' class IndexControllerTest < ActionController::TestCase test "access the index page" do get :index assert_response 200 end end
运行,肯定跑不通,写代码来实现功能
删除public下面的index.html文件
配置以下路由,指定新的主页路径
root :to=>'index#index'
在IndexController中添加主页action
class IndexController < ApplicationController def index end end
在app/view/index/下面添加index.erb文件
运行rake test,显示错误
test_helper.rb:3:in `<class:TestCase>': undefined method `fixtures' for ActiveSupport::TestCase:Class (NoMethodError)
这是测试用例的问题
把test_helper.rb中调用测试用例的代码注释掉
# fixtures :all
再次运行测试rake test
IndexControllerTest PASS test_access_the_index_page (0:00:00.334) Finished in 0.335200 seconds. 1 tests, 1 passed, 0 failures, 0 errors, 0 skips, 1 assertions
访问主页成功
ps:上面的controller基本上跟mongo没啥关系,但是考到功能测试出现的这fixtures还是把这个放上来了
模型
创建一个名为user的model:执行命令
rails g model topic --skip-migration --orm=mongo_mapper
orm这个参数如果不写,会出现这个错误
No value provided for required options '--orm'
执行完成之后显示生成的文件:
invoke mongo_mapper create app/models/user.rb invoke test_unit create test/unit/user_test.rb create test/fixtures/users.yml
如果不想每一次都写这个--orm
在config/application.rb中添加:
config.generators do |g| g.orm :mongo_mapper end
user.rb代码
class User include MongoMapper::Document key :name, String key :age, Integer end
user_test.rb代码
# encoding: utf-8
require 'test_helper'
class UserTest < ActiveSupport::TestCase test "new user test" do assert_equal User.count,0 assert_difference "User.count",1 do User.create(:name=>"王华",:age=>18) end user = User.last assert_equal user.name, "王华" assert_equal user.age, 18 end
运行单元测试
rake test:units 发现错误
Errors running test:units!
查看堆栈得到信息
** Invoke test:units (first_time) ** Invoke test:prepare (first_time) ** Invoke db:test:prepare (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:test:prepare rake aborted! Set config before connecting. MongoMapper.config = {...}
提示在链接之前先配置:
project_name$ script/rails generate mongo_mapper:config create config/mongo.yml
此配置文件的内容是:
development: host: 127.0.0.1 port: 27017 database: project_name_development test: host: 127.0.0.1 port: 27017 database: project_name_test # set these environment variables on your prod server production: host: 127.0.0.1 port: 27017 database: project_name username: <%= ENV['MONGO_USERNAME'] %> password: <%= ENV['MONGO_PASSWORD'] %>
rake test;units是没有问题了
UserTest PASS test_new_user_test (0:00:00.333) Finished in 0.469750 seconds. 1 tests, 1 passed, 0 failures, 0 errors, 0 skips, 4 assertions
另外还写了一个users_controller的增删该查以及它的测试,跟mysql关联的写法没有任何区别,完全一样。
测试项目源码地址
https://github.com/chinacheng/mongodb_project
发表评论
-
Ubuntu下rails程序链接oracle数据库
2015-09-17 15:32 2511rails支持oracle数据库连接 一、下载安装(解压)依 ... -
rails查询清除默认排序
2015-05-28 21:01 964User.all.order('id desc ').reor ... -
sunspot-rails无法启动,后台访问404错误
2015-03-18 15:20 1092问题是这样的: bundle exec rake suns ... -
使用Vbox虚拟机Ubuntu搭建Rails开发环境
2015-03-16 13:50 0本文部署环境为Vbox虚拟 ... -
nokogiri的gem安装错误
2015-02-10 12:56 3249安装nokogiri错误 Error installing ... -
ubuntu中ruby使用文字生成图片以及汉字不显示(或者乱码)的问题
2014-12-23 10:29 2359ruby中使用IMGKit这个gem可以完成文字以及html生 ... -
Passenger无法加载github源的gem包问题
2014-07-07 16:06 612添加github的项目源之后,项目在产品模式下报错,使用的是p ... -
启动错误Passenger::SecurityException “Line too long”
2014-06-21 10:08 1671项目不能启动,nginx错误日志中 引用 Pool2/Im ... -
rails中try的用法
2014-04-01 17:16 1332try的用法还是挺好的,避免异常,除法看上去有点特殊,其实也就 ... -
Rails的旧版本API
2014-02-27 15:47 966rails官网的api查询默认是最新版本 http://api ... -
Vbox虚拟机访问rails程序,BetterErrors的使用无效的问题
2014-02-14 15:12 1049BetterErrors可谓是一个调试程序的一个神器,他会把错 ... -
Rails3使用easy_captcha来实现验证码
2013-07-17 10:58 3637easy_captcha是一个比较简洁的用来做验证码的gem插 ... -
ubuntu 中passenger安装nginx部署rails 问题
2013-06-21 10:08 2042Passenger有一个专门安装nginx的模块,安装起来非常 ... -
Rails3程序在产品模式下出现assert文件404错误的问题
2013-03-07 17:47 1444rails3程序部署产品模式之后 出现以下静态文件错误 1 ... -
rspec页面元素测试
2013-02-19 09:32 1276使用rspec测试页面元素 get :new ... -
rvm安装ruby,gem,rails,之后仍然无法找到rails命令
2012-11-29 10:18 4813又在这里在栽跟头了,很久之前遇到过,没想到这次还是遇到了。真是 ... -
Rails设置url末端以斜杠为终止符
2013-06-13 17:06 1104局部设置 link_to 'Companies', compa ... -
rails3使用devise问题小记
2012-10-29 21:09 0$ rails generate devise:install ... -
paperclip一些使用技巧
2012-07-29 12:10 1459一、关于styles设置,缩略图的切割策略 有两个符号,一个是 ... -
Rails获取用户访问的ip
2012-07-26 10:06 5043在rails中获取rails的ip值 ...
相关推荐
)Mongo ODM一起使用的自定义Mongo会话存储。 MongoSessionStore版本3与Rails 4.0到5.2兼容。 有关Rails 3的支持,请查看问题了解选项,并让我们知道您是否需要支持。 安装 将mongo_session_store gem添加到您的...
这是最新的Rails 3.1 实战,包括TDD、BDD等实用技术。
最后,`Rails应用中MongoDB+MySQL杂交`的话题意味着在同一个应用中同时使用MongoDB和MySQL是可能的。这通常用于混合使用关系型数据和非关系型数据,或者在迁移过程中逐步替换数据库。在这种情况下,需要分别配置`...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
标题 "rails3.1安装与mysql配置 windows" 涉及到的是在Windows操作系统上安装Ruby on Rails 3.1框架并配置MySQL数据库的过程。这是一个关键的开发环境设置步骤,对于使用Rails进行Web开发的程序员来说至关重要。Ruby...
### 敏捷Web开发与Rails 4th Edition (Rails 3.1)——全面解析 #### 核心知识点概述 《敏捷Web开发与Rails》第四版涵盖了最新的Rails 3.1版本,是一本旨在帮助开发者快速掌握Ruby on Rails框架的核心书籍。本书...
backbone-rails, 在 Rails 3.1中轻松使用 backbone.js 主干 rails 轻松设置并使用 Rails 3.1和更高版本的backbone.js ( 1.2.2 )##Version#####Github 主 branch###gem 版本:1.2.2Backbone 版本:1.
tiny_mce, Ruby on Rails 插件( pre Rails 3.1 ),允许你轻松地将TinyMCE编辑器实现到你的应用程序中 用于 Rails的 TinyMCE因为我...注意 Rails 3.1用户: 针对 Rails 3.1资产中的JavaScript库的改进,不推荐使用 Ra
“Agile Web Development with Rails, 4th Edition”这本书是学习Rails 3.1的绝佳资源,它详细讲解了如何使用这个版本进行敏捷开发。书中涵盖了从基础概念到高级技巧的各个方面,包括数据库设计、控制器、视图、模型...
咖啡豆Rails 3.1包含了轰动。... 在您的Rails 3.x项目中(是的,这在Rails 3.0.x和Rails 3.1中都可以使用)将以下内容添加到您的Gemfile : gem 'coffeebeans' 然后运行: $ bundle install 就是这样!
MongoDB Logger Example on Heroku: 使用mongodb_logger gem的实战指南 MongoDB Logger 是一款用于记录应用程序日志的工具,特别适合在Heroku这样的云平台上使用。这个示例应用旨在展示如何将mongodb_logger gem...
在Ruby on Rails开发中,有时候我们可能需要使用非关系型数据库,例如MongoDB,而不仅仅是传统的SQL数据库。MongoMapper是一个非常流行的Ruby库,它为Ruby on Rails应用提供了与MongoDB集成的能力。本教程将详细讲解...
mongo_odm 任何 Ruby 类到 MongoDB 的灵活持久性模块。 为什么是 MongoDB 的另一个 ODM? * Fully compatible with Rails 3 * Use the Mongo ruby driver when possible (query syntax, cursors, indexes ...
脚本以用于 Rails 3.1+ 和 Rails 4 资产管道。 安装 将jquery_file_download-rails添加到应用程序的Gemfile : gem 'jquery_file_download-rails' 运行 Bundler 来锁定 gem: bundle install 在jquery和jquery...
该项目允许您在 Rails 3.1 应用程序中轻松使用 iPhone 样式的复选框。 安装 将gem 'ios-checkboxes'添加到 Gemfile 并运行bundle install 与 Rails 3.1 一起使用 将//=require ios-checkboxes添加到您的app/assets/...
您可能在使用低于 3.1 的 Rails 版本时遇到问题。 要使用 MongoidShortener,首先你必须安装 gem。 # Gemfile gem "mongoid_shortener" gem "yab62" , require : "yab62" # Terminal bundle install 之后,确保...
在添加同时使用,并充分利用Rails 3.1资产管道。 jasmine-stories消除了您没有测试失控应用程序的任何借口。 该项目,是的无耻“叉子”,并使用了MIT-LICENSE。 无头测试 有关详细信息,请参见。 默认情况下,将...
描述中虽然没有具体信息,但我们可以推测这可能是一篇关于Rails中查询技巧和最佳实践的学习笔记,可能包括如何使用ActiveRecord查询接口进行复杂的数据库操作,如选择、过滤、排序、分组等。 标签 "源码" 暗示了这...
利用并充分利用Rails 3.1资产管道的好处Jasminerice消除了您没有测试CoffeeScript文件无法控制的泛滥的借口。 该项目动摇并使用了MIT-LICENSE。 发展须知 布拉德·费兰(Brad Phelan)不再积极开发该项目,但正在...