Rails
ruby on rails 之旅
大熊猫侯佩
非自由程序员,CSDN博客认证专家。
CSDN汇编板块版主, CSDN其他开发语言大版版主。
对App、以及Cocos2D、SpriteKit游戏开饶有兴趣。目前常用的语言是ObjC、Swift、Ruby等。不过看到编程艺术、ASM、逆向和C时依然欲罢不能。虽然不是,但喜欢黑客的思维和哲学,认为社会工程学很酷,但还没有实际用来撩过妹。
-
原创 MacOS下安装RVM无法安装公钥的解决办法
在安装RVM之前先要导入公钥:gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3或者:gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3不过可能2017-04-16 06:57:053500
0
-
原创 MacOS下安装rvm的几点注意
如果用以下链接无法下载的话:curl -sSL https://get.rvm.io | bash -s stable#或者curl -L https://rvm.io | bash -s stable那么你可能需要直接从git中下载安装,那么首先你要装gpg,gpg是一个加密解密的包,MacOS中默认是不安装的,我们可以到 https://gpgtools.org 去下载,然后install.2017-01-11 05:18:072776
1
-
原创 MacOS中安装native gem报找不到stdio.h的解决
这是因为你没有安装xcode开发包,你可以在控制台输入:xcode-select --install安装即可.2017-01-13 13:33:15963
0
-
原创 MacOS下rvm安装新版本ruby时报curl SSL证书错误的解决
首先将rvm升级至最新版本:rvm update然后更新证书:rvm osx-ssl-certs update all最后更新gems:rvm rubygems latest2017-01-13 13:30:421447
0
-
原创 rails将类常量重构到数据库对应的表中之一
问题是这样:原来代码.html.erb页面中有一个select元素,其每个item对应的是model中的类常量:类中的常量定义如下:class Order < ActiveRecord::Base PAYMENT_TYPES = ["Check","Credit card","Purchase order"]end现在想把PAYMENT_TYPES重构至数据库中的表里去,于2015-02-03 10:42:571509
0
-
原创 rails中weill_paginate的paginate方法中不能使用额外参数的解决办法
我们知道高版本中的rails中的分页功能已经放在will_paginate这个gem中,我们在控制器方法中往往需要调用其paginate方法来实现分页数据集控制,举个例子:正常的情况我们想要每页显示10条记录可以这么写:Item.paginate(page:params[:page],per_page:10)但是我们又想要降序排列记录呢?书上给出的例子如下:Item.paginate(2015-02-02 20:42:431600
0
-
原创 rails4 中使用分页的方法
以前老版本的rails中默认自带分页方法,不过从rails2.0开始就将内置的分页pagination对象移除了,改以第三方gem提供支持.要在新的rails里使用分页也是非常简单啦,首先安装will_paginate GEM,如果gem install超时,则可以到rubygems.org手动下载然后本地安装:gem install -l xxx.gem. 在rails项目的Gemfi2015-01-15 16:04:314858
0
-
原创 rails应用ajax之三:进一步完善ajax动画特效果
本猫已经对界面放低标准很久了,但是复习了ajax之后突然发现:哇!原来世界可以这么美,这么生动鲜活的!所以本篇主要讨论下如何用ajax在rails中做一些简单的动画效果。 其实最新版的的rails中使用的是coffeescript,它也是对js的高级封装,使其更贴近于ruby简洁灵动的语法。coffeescript暂时不校习鸟,以后补上吧!在rails旧版本中使用的js框架是protot2015-01-12 19:58:591439
0
-
原创 Rails高级路由知识:手动为路由创建名称
常规在routes.rb中设定的路由规则,rails都会为我们顺便创建一个名称,比如:risks GET /risks(.:format) risks#index POST /risks(.:format) risks#create2017-03-13 20:42:20633
0
-
原创 Rails出现ROLLBACK TO SAVEPOINT active_record_1信息的解决
使用sqlite3和postgresql均在rails console中存储数据库出现上述信息,无法正常生成记录,且无出错信息。具体表现为生成的记录key为:nil:rails版本为5.0.3,ruby版本为2.2.6.因为用2种数据库都出现同样错误,所以基本排除数据库引擎的问题。检查model及migration的定义,未发现问题!同一台mac上另一个rails 4.x的项目是正常的!在安装了ge2017-05-29 17:41:111199
0
-
原创 如何在Rails Console中使用path和helper方法
我们知道Rails中的helper方法(比如link_to)默认只能在模板(Template)中使用,如果想要在控制台中调用,可以加前缀helper:helper.link_to#或者ApplicationController.helpers.link_to虽然比较少见,不过如果真的要在Controller或Model中呼叫Helper,则也可以用ApplicationController.he2017-03-24 16:56:321455
0
-
原创 单独使用ActiveSupport的助记
Rails里大方光彩的ActiveSupport组件也可以单独使用,比如里面对Time做了扩展,你可以直接调用Time.zone(=)方法来获取和设置当前时区.但你会发现,当你:require "active_support"#或者require "active_support/time_with_zone"之后实际上并没有扩展Time,因为遵循KISS和lazy原则,默认它并不加载任何内容滴.2017-03-23 07:27:011276
0
-
原创 脱离Rails单独使用ActiveRecord的几点需知
抛开Rails使用ActiveRecord效果非常好,因为ActiveRecord本身就是一个优秀的DBI!首先不要再连接中写参数:#不推荐!!!ActiveRecord::Base.establish_connection( :adapter=>'sqlite3', :database=>'data.sqlite3', :pool=>5,2017-03-22 19:56:522268
0
-
原创 Ubuntu下安装gem包curses的步骤
curses是一个原生gem包,所以需要先安装curses库:sudo apt-get install libncurses5-dev然后再安装gem包即可:gem install curses以下是curses的api参考:Curses 模块模块函数init_screen 为curses初始化屏幕。在使用Curses模块中的任何方法之前,都必须调用该方法进行初始化操作。close_scre2017-03-22 19:00:561404
0
-
原创 Rails高级路由知识:手动为路由创建名称
常规在routes.rb中设定的路由规则,rails都会为我们顺便创建一个名称,比如:risks GET /risks(.:format) risks#index POST /risks(.:format) risks#create2017-03-13 20:43:27844
0
-
原创 Ubuntu下postgresql的管理
首先关键的pg_hba.conf路径在:/etc/postgresql/9.5/main其中9.5要换成你实际的版本,里面还有一个非常重要的文件:postgresql.conf以下是管理postgresql进程的一些命令://启动/etc/init.d/postgresql start//停止/etc/init.d/postgresql stop如果你懒得记上面的路径,你还可以这么管理:ser2017-03-10 21:46:171030
0
-
原创 Postgresql用户密码过期的解决(二)
我们在(一)中讨论了如何在pgAdmin中对用户密码过期时间的修改,其实我们还可以在psql中方便的实现相同的功能哦.首先还是要让用户能登陆进psql,所以还得先修改pg_hba.conf文件,详见(一)中的方法.用管理员登录psql:psql -U admin postgres现在你可以用以下命令修改用户密码:alter user user_name with password 'new pass2017-03-10 20:51:392287
0
-
原创 Postgresql用户密码过期的解决(一)
1.必须可以登录到数据库所在的那台物理机器上.2.将pg_hba.conf(我mac下的路径为:/usr/local/var/postgres/pg_hba.conf)中127.0.0.1那行的认证方式改为trust.3.用pgadmin以管理员登录进数据库,此时应该不需要输入密码4.修改对应用户密码的过期时间,你也可以设置永不过期:5.别忘了将第一步的trust改回password,或任何原先的认2017-03-10 19:47:462459
0
-
原创 Rails利用ActiveRecord完成时间相关的条件查询
对于时间相关的查询我们可以直接用数据库底层命令来做:where_str << "at_moment between ? AND ?"where_vals << date_start << "#{date_end} 23:59:59"where_str << (where_str == "" ? "(now() - '#{days_interval}'::INTERVAL) < at_moment"2017-03-10 14:38:311824
1
-
原创 Rails高级路由知识:筛选路由-路由冲突的优雅解决方案
Rails项目有一个Article模型,对应ArticlesController控制器,其路由设置如下:resources :articles doend这样它的CRUD路径就都自动创建出来了 ;)现在我想再添加一个对Article模型搜索的页面,那么首先要在控制器中添加对应的search方法:def search render text:"hello search!!!"end然后在Ar2017-03-10 11:34:411079
0
-
原创 Rails在production环境下css资源找不到路径的解决
Rails的生产环境下assets的名称里会嵌入md5散列,所以在生产环境中在css里直白的使用比如logo.img或../assets/dark.jpg之类的名称,就会发生找不到路径的错误!这个问题在开发环境下是没有的,因为开发环境不会修改assets名称.而且该问题在正常使用image_tag方法的rb文件里也是没有的,因为image_tag方法全帮你搞定了!网上公认的解决方法是现将css文件加2017-03-08 21:39:032122
0
-
原创 Rails控制台出现current transaction is aborted错误的解决
今日在Rails console中做出一次错误查询之后,出现如上错误:Risk.find_by(some_key:1)注意Risk类没有some_key这个属性,果然出错了:PG::UndefinedColumn: ERROR: column risks.some_key does not exist不但如此,之后的任何合法操作全部出错:PG::InFailedSqlTransaction: ER2017-03-06 21:12:261551
0
-
原创 Rails启动Nginx提示找不到PassengerAgent的解决
因为前不久用gem uninstall -a命令删除了不少gem,所以更多相关的系统组件都精神不太正常 ;(按照往常一样启动ngxin,可是这次报错:sudo nginxnginx: [alert] Unable to start Phusion Passenger: Support binary PassengerAgent not found (tried: /Users/apple/.rvm2017-03-03 05:59:161791
0
-
原创 Rails g -h报错json:_rb_str_new_static的解决
最近比较背运,各种奇葩的怪事轮流袭来,刚搞定了rails new问题,本以为都ok了谁知Rails g -h也报错,貌似是和json包相关的错误:_rb_str_new_static,开始以为是ruby版本低的问题,先升级2.2.5到2.4.0:rvm install 2.4.0 --disable-binary因为没有Mac 10.12版本的2.4.0的二进制版本,所以后面加上禁止搜索binary2017-03-02 16:38:53839
0
-
原创 Mac下rails new提示Bundler::Plugin::API::Source错误的解决
近日Mac老是频发奇怪问题,在新建railsxian项目到bundle install一步时会报如下错误:/Users/apple/.rvm/gems/ruby-2.2.5/gems/bundler-1.14.5/lib/bundler/rubygems_ext.rb:45:in `full_gem_path': uninitialized constant Bundler::Plugin::API2017-03-02 11:51:01781
0
-
原创 Rubygem报no such name xxx.gemspec.rz的解决
这个有可能你本地网络的原因,也有可能是gem源的问题,我采取的方法是更换gem源.你可以使用如下命令显示gem源列表:gem sources -l你可以使用如下命令来删除和新增源:gem sources --remove https://rubygems.org/gem sources -a http://ruby.taobao.org/然后你可以更新源缓存:gem sources -u上面的命令2017-03-01 09:00:173188
0
-
原创 Rails安装eventmachine提示出错的解决方法
github中的项目其中需要eventmachine包:gem 'eventmachine'但是直接bundle出错,提示找不到openssl/ssl.h头文件:make "DESTDIR="compiling binder.cppIn file included from binder.cpp:20:./project.h:107:10: fatal error: 'openssl/ssl.2017-02-28 10:52:531652
0
-
原创 Mac下修复Node版本不正确的问题
可能我的Mac很久之前装过Node,现在又想耍一下子,于是习惯性动作是先看版本:node -v咦?为毛输出的是0.12,现在应该都是至少6.x,7.x起步啊!?估计要更新了,遂重装node:brew install node提示node 7.5.0安装完毕,但是再次查看node版本还是0.12版本!这是因为brew发现原有的bin目录中有老的node链接,所以默认不会做任何修改,这可不是我们想要的,2017-02-27 08:20:051753
0
-
原创 Firefox浏览器直接调试jQuery或underscore的方法
如果你觉得调试jq或者_还得再打开一个包含它们的网页再玩太麻烦,下面就有一个小技巧适合直接调试它们.只需简单的一句即可:;(function(d,s){d.body.appendChild(s=d.createElement('script')).src='http://code.jquery.com/jquery-1.9.1.min.js'})(document);对于underscore也很简单2017-02-27 08:01:32881
0
-
原创 Mac安装V8和Less
在rails项目里添加了如下3个gem:gem 'therubyracer'gem 'less-rails'gem 'twitter-bootstrap-rails'最后一个是css样式表,估计需要less支持,而less又需要javascript运行时去编译LESS文件到css.原文如下:Post-install message from twitter-bootstrap-rails:Im2017-02-26 19:52:042053
0
-
原创 Rails使用plain渲染出错的原因
在Rails的官方教程中使用如下代码完成纯文本的渲染:def create render plain: params[:article].inspectend但是在访问该路径时仍然发生了找不到模板的错误.原因是plain只是在rails 4.1之后引入的选项,如果你的rails版本低于4.1则不会有效果.我们在低于4.1的版本中可以使用替代选项text:render text: params[2017-02-26 16:27:531138
0
-
原创 Ubuntu下安装rmagick包
因为rmagick需要编译原生代码所以你必须安装对应的库:sudo apt-get install imagemagick-6.q16sudo apt-get install imagemagick-dbgsudo apt-get install libmagickwand-dev接下来你安装ruby-filemagic时还是会报错,这时还要安装另外一个库:sudo apt-get install2017-02-26 09:08:441257
0
-
原创 Rails中rmagick库的简单用法
首先rmagick是一个图形处理库,需要ImageMagick的支持.在安装了imagemagick库之后,你可以直接用如下命令查看其所支持的图片格式:convert -version#输出如下:Version: ImageMagick 6.9.7-9 Q16 x86_64 2017-02-18 http://www.imagemagick.orgCopyright: © 1999-20172017-02-24 10:58:59983
0
-
原创 Rails使用paperclip报CommandNotFoundError错的解决
已安装ImageMagick,但在设定了指定大小后paperclip报错:Paperclip::Errors::CommandNotFoundError (Could not run the `identify` command. Please install ImageMagick.):Command :: identify -format '%wx%h,%[exif:orientation]'2017-02-22 22:42:021339
0
-
原创 MacOS下gem安装rmagick的蛋疼经历
在ubuntu下安装貌似很容易安装对应的dev包就可以了,但是mac下用brew貌似找不到神马dev包可用,不过没关系,找dev的目的就是找到对应的头文件,brew安装包的源代码可以在:/usr/local/Cellar/里找到,我们首次尝试安装:gem install rmagick提示找不到ImageMagick,所以先用brew安装ImageMagick吧:brew install Image2017-02-22 18:27:551613
0
-
原创 Rails启动项一些参数的调整
关闭冗余日志信息首先在config/initializers目录中的backtrace_silencers.rb里可以按需或者全部关闭不必要的错误栈回溯信息,以免你日志拖的太长://过滤特定library的信息Rails.backtrace_cleaner.add_silencer{|line|line=~/my_noisy_library/}//过滤所有信息Rails.backtrace_cl2017-02-21 09:12:54859
0
-
转载 SQL中datetime和timestamp的区别
原文地址 : http://blog.csdn.net/luoyin22/article/details/9068885初学PHP+MySQL,在开发一个简单的报名程序时,要求在每一条新插入的记录后面添加一个日期字段,方便日后查询和排序。于是立即百度,发现可以使用datetime或timestamp两种日期类型来实现。这对于爱纠结的我来说是不被允许的,于是立即去找它们的区别。但是搜出来的要么是长篇大2017-02-18 12:51:152054
0
-
原创 Rails如何让"已删除"的model对象不能被编辑(三)
上面两篇比较好的解决了所需的问题.但是现在又有新需求了:在删除对象时必须给出删除原因.即was_deleted若为true,要求delete_reason必须不为”“.我们先来做第一次尝试:before_save do |r| if r.was_deleted && r.delete_reason == "" r.errors[:bese] << "删除时必须输入删除原因!"2017-02-16 10:42:08420
0
-
原创 Rails如何让"已删除"的model对象不能被编辑(二)
在第一篇中我们讨论了如何控制model的hook流.但是其实其中还是有未考虑到的地方,比如在新建一个model对象的时候,会报错:ActiveRecord::ActiveRecordError: can not update on a new record object意思是你不能在一个新建对象上调用update方法!对应的代码如下:def was_deleted=(new_val) unl2017-02-16 10:03:30476
0
-
原创 Rails如何让"已删除"的model对象不能被编辑(一)
这里的已删除被打了引号,意思是并未真的从数据库中删除,而是其有一个was_deleted属性,如果值为true则表示其已被删除.这时用户还能查看其内容,但无疑不能再编辑它了.那么用rails的model验证和hook如何实现这样的效果呢?首先编辑执行的是update方法,所以我们必须在before_update上下功夫:before_update do |r| #do somethinge2017-02-15 21:09:28491
0