- 博客(32)
- 收藏
- 关注
原创 vagrant与virtualBOX安装环境遇到的两个问题
第一次接触vagrant,看似简单的安装环境调试遇到两个问题,记录下来,希望能够帮助到遇到同样问题的朋友。第一个问题:执行完vagrant init命令后,紧接着启动vagrant up报错原因是在执行vagrant init命令时,没有指定文件名,这样在执行vagrant up时就无法找到正确的文件第二个问题:因路径中存在中文编码而无法启动第一个问题解决之后,执行vagrant up命令...
2020-04-09 15:19:37
1642
2
原创 正则表达式通配符组合.*与*.的区别
有这么四行数据1.this line is empty2.this line +empty3.this line.empty4.this lineempty如果使用grep ‘line.*e’ 来进行检索的话,四行数据都可以检索出来;但是如果使用grep ‘line*.e’ 来进行检索的话,则只能检索出后两行;其实这还得从通配符.和*所表示的含义说起。通配符含义...
2020-04-02 16:41:47
1642
原创 Ruby on Rails——Active Records 关联
Rails 支持六种关联:belongs_to has_one has_many has_many :through has_one :through has_and_belongs_to_many1.belongs_to 声明所在的模型实例属于另一个模型的实例。 在belongs_to关联声明中必须使用单数形式。2.has_one 表示该模型的实例包含或拥有另一个模型的一个实...
2019-02-25 17:08:21
345
翻译 Ruby on Rails——关于Active Record的一些说明
一、一些默认的命名规则在Ruby on Rails中,通过一些默认的命名规则来建立模型(Model)和数据库中的表(DB Table)之间的关系。Rails会将你定义的类名称的复数形式作为数据库中表的名称。例如,你定义了一个名为Book的类,那么在数据库中就对应的有一个名为books的表。Rails的这个功能非常强大,不管你定义的类的名称是规则名词还是不规则名词,它都会自动的找到它的复数形式。...
2019-02-20 15:36:55
458
原创 Ruby on Rails——一个简单的认证
我们建立了一个blog,并且加入了comment功能,但是现在我们发现谁都可以访问它,任何人都有CRUD的权限。现在,我们通过一个简单的示例来学习一下怎么添加权限认证。当然,Rails提供了许多关于认证的内容,实际项目中要比现在的示例复杂一些。Rails提供了一个简单的http认证系统,通过http_basic_authenticate_with方法来进行控制。我们在article_con...
2019-02-14 17:47:56
260
原创 Ruby on Rails--给blog添加评论功能
通过前几天的例子,我们建立了自己的第一个blog网站,并实现了对数据库的CRUD操作,初步了解了Rails的MVC架构,使用rails generate model命令生成model文件,并执行rails db:migrate命令在数据库中创建相应的表;使用generate controller命令生成controller文件,在controller文件中编写业务流的控制程序,同时为了给用户一个直...
2019-02-14 16:07:48
421
原创 Ruby on Rails——一个完整的例子(八)
本节是关于这个blog项目的article相关的例子的最后一节,让我们一起来学习一下如何删除一个article。要实现删除的动作,我们需要在controller中添加destroy方法,在destroy方法中,我们需要知道要删除的对象,所以至少需要把article的id作为参数传递过来。 def destroy @article = Article.find(params...
2019-02-13 16:34:31
391
原创 Ruby on Rails——一个完整的例子(七)
在之前的例子中,我们发现在new和edit两个view中,都使用到了form_with这个Rails内置的helper,我们可以把这部分内容提取出来,作为共通的部分供所有需要使用它的view使用。新建一个_form.html.erb的文件,将两个文件中的form_with装进来。 <%= form_with model: @article, local: true do |form...
2019-02-13 13:19:04
398
原创 Ruby on Rails——一个完整的例子(六)
这一节我们来学习一下怎样更新我们创建的博客。既然要做变更的操作,我们首先要在controller中添加update方法,update方法与create方法基本是一样的,不同的是create创建的是一个新的article,而update要有一个更新的对象,所以在create中用到的是Article.new,而在update中用到的则是Article.find,根据article的id来进行查找。...
2019-02-12 17:30:53
242
原创 Ruby on Rails——一个完整的例子(五)
这一节我们来学习一下Rails的有效性验证。在自动生成的app/models/article.rb文件中,只有这么简短的一段代码: class Article < ApplicationRecord end 这段代码说明Article这个model继承自ApplicationRecord。实际上,ApplicationRecord继承自ActiveRecor...
2019-02-12 16:05:27
524
原创 Ruby on Rails——一个完整的例子(四)
这个例子的一开始,我们是通过访问Rails的welcome页面进行展示的。现在让我们通过连接从welcome页面迁移到article页面。我们对welcome/index.html.erb文件变更如下: <h1>Hello, Rails!</h1> <%= link_to 'My Blog', controller: 'articles' %&g...
2019-02-11 17:44:15
216
原创 Ruby on Rails——一个完整的例子(三)
现在我们将创建的articles通过列表的形式展示出来。在articles_controller.rb的index方法中加入下面这行代码:@articles = Article.all然后我们再新建一个index.html.erb文件,添加代码如下:<h1>Listing articles</h1> <table> <tr>...
2019-02-11 17:17:36
209
原创 Ruby on Rails——一个完整的例子(二)
我们可以使用表单生成器来创建表单。在这里我们先使用以下rails为我们提供的form_with方法,把它加入到之前创建的文件app/views/articles/new.html.erb中:<%= form_with scope: :article, local: true do |form| %> <p> <%= form.label :titl...
2019-02-11 16:21:58
1697
原创 Ruby on Rails——一个完整的例子(一)
现在让我们试着自己动手创建一个controller、action和view。我们在之前的blog项目里,可以创建一个新的资源。所谓资源,是指一种类似对象的集合,我们可以创建、读取、变更和删除它们。 Rails提供了一种创建资源的方法,我们只需在config/routes.rb中增加相关内容即可。Rails.application.routes.draw do...
2019-02-01 17:44:24
762
原创 Rails的第一个页面--Hello,Rails!
Rails是典型的MVC架构,项目的程序主要存在与app这个文件夹中,打开这个文件夹,我们可以看到views和controllers这两个子文件夹,这个简单的例子由于没有用到数据操作,所以暂时与model无关。我们可以使用generate命令来创建一个新的controller。命令为:rails generate controller Welcome index我们可以看到系统自动生成...
2019-01-31 17:52:43
228
原创 初识Rails--创建一个新项目
安装Rails:gem install rails创建一个blog项目:rails new blog自动创建完成的blog项目文件如下:然后启动rails server,使用命令rails server 从信息中我们可以看到监听端口为3000,在浏览器中输入localhost:3000,就可以访问页面了。 ...
2019-01-31 17:33:10
975
1
原创 初识nokogiri
Nokogiri是一个HTML、XML、SAX等解析器。它可以通过CSS3或者XPath来检索文档。具有如下特征:XML/HTML DOM parser which handles broken HTML XML/HTML SAX parser XML/HTML Push parser XPath 1.0 support for document searching CSS3 sele...
2019-01-30 15:36:14
322
原创 初识sinatra
Sinatra 是一门基于 Ruby 的领域专属语言,致力于轻松、快速地创建网络应用。安装命令:gem install sinatra创建一个测试文件:hello.rb 内容如下:require 'sinatra'get '/' do 'Hello world!'end执行程序:ruby hello.rb打开浏览器,按端口号输入本地uri,就可以看到自己的内容了...
2019-01-29 17:46:22
342
原创 Rspec初接触
今天第一次使用了Rspec,还没有用到Rails,所以只是做了一个非常简单的测试,步骤如下。1.首先是安装Rspec, 使用命令gem install rspec,最新版本是3.8.0 2.然后是创建自己的文件夹,在自己的项目文件夹下新建一个lib文件夹,放入测试对象文件;在项目文件夹下书写测试文件。 3.使用rspec 测试文件名 来执行测试 注:本例的警告信息,是由于新...
2019-01-24 17:53:59
198
原创 Ruby中的块
学习Ruby时间不长,但是感觉块(Block)是其中非常重要和方便的部分。块与块甚至可以像火车车厢一样,一节一节地连接起来使用。比如下面这个例子:['banana', 'anana', 'naan'].map do |food| food.reverseend.select do |f| if(f.match /^a/) p f endend这段代码里,用到了两个...
2019-01-21 16:40:48
213
原创 Ruby格式化输出与抛出异常
题目:定义一个类BookInStock,它表示一本书,这本书拥有ISBN编号isbn和一个用浮点数表示的价格price作为属性。构造函数应该接受ISBN号码(一个字符串)作为第一个参数,价格作为第二个参数,并且当这个ISBN号码是空字符串或者当价格小于等于0时触发ArgumentError(一个Ruby内置的异常类型)。你要为这些属性编写恰当的getter和setter。编写一个方法pri...
2019-01-21 15:18:57
431
原创 Ruby中有关字符串长度的操作
题目:定义方法binary_multiple_of_4?(s),它接受一个字符串,并且当该字符串表示的是一个可以被4整除的二进制数时返回true。注意:一定要保证当字符串不是合法的二进制数时,该方法返回false。(此处前导0视为合法,但仅有0视为不合法) 分析:判断字符串的长度用String#size方法较为合适,另外判断可以被4整除时要注意字符串长度为0即空字符串的特殊情况。def...
2019-01-18 16:12:11
1809
原创 Ruby中的正则表达式
题目: 这道题目主要考察正则表达式的写法,只要判断字符串的首字母即可。这里用到了判断字符串首字母的正则表达式元字符\A。我一开始用成了^,怎么都不成功。正则表达式这个部分还是需要记忆的。定义方法starts_with_consonant?(s),它接受一个字符串,并且当该字符串以辅音字母开头时返回true,否则返回false。(这里所指的辅音字母是除了A, E, I, O, U以外的...
2019-01-16 18:27:58
491
原创 一段需要改进的代码
看一下这个练习。 根据我浅显的认识,我觉得需要对数组元素遍历,只要找到两个元素的和等于n就可以返回true。定义方法sum_to_n?,它接受一个整数数组和额外的一个整数n作为参数,并且当该数组中存在两个元素的和为n时返回true。根据定义,输入空数组和0时应该返回true。def sum_to_n(a, n) if a.size < 2 p true else...
2019-01-16 17:55:43
114
原创 使用sort对数值进行排序
看一下这个练习。定义方法max_2_sum,它接受一个整数数组作为参数,并返回该数组中最大的两个元素的和。对于空数组它应该返回0。对于只有一个元素的数组,它应该返回此元素。 这个练习需要注意以下几点:1.对传入的参数数量进行判断,无参数传入时输出0;一个参数传入时输出参数本身;两个以上参数传入时返回最大的两个元素的和。2.既然求两个最大元素的和,就要对数组进行排序。而Ruby中的so...
2019-01-16 16:54:30
978
原创 命令行获取参数转数值计算
遇到这样一个练习,跟大家一起学习一下。定义方法sum,它接受一个整数数组作为参数,并返回该数组所有元素的和。对于空数组它应该返回0。看起来很简单,我的想法是这个整数数组是读取命令行获得的。我们知道Ruby中预定义了两个从命令行获取参数的常量,ARGV和ARGF。 其中,ARGV表示命令行参数数组;ARGF表示从标准输入得到的虚拟文件对象。在这里用ARGV更合适一些,但是ARGV得到的是字符串...
2019-01-16 15:40:12
670
原创 关于cannot load such file -- sqlite3/sqlite3_native (LoadError)的错误
今天试着用ruby操作sqlite3数据库,用gem安装sqlite3数据库,是没有问题的。D:\software\sqlite-amalgamation-3260000\sqlite-amalgamation-3260000>gem install sqlite3Fetching: sqlite3-1.3.13-x64-mingw32.gem (100%)Successfully ...
2019-01-15 14:51:56
2409
原创 用Ruby实现检索功能
先来看这个《Ruby基础教程》用以邮编查询的例子。Encoding.default_external = Encoding.find('utf-8')code = ARGV[0]start_time = Time.now # 获取处理开始的时间File.open("./01hokkai/01HOKKAI.CSV","r:shift_jis").each_line do |lin...
2019-01-14 14:12:05
352
原创 Ruby中的文本处理
在《Ruby基础教程》中,作者为了详细说明对文本的操作举了一个非常生动的例子。我在学习的时候有一些地方不太理解,标记如下,与大家共勉。Encoding.default_external = Encoding.find('utf-8')pattern = Regexp.new(("(.{0,10})("+ARGV[0]+")(.{0,10})").to_s.encode('utf-8')...
2019-01-11 18:21:21
382
原创 关于文字编码的继续探讨
依然是《Ruby基础教程》中的例子,这回程序需要根据输入的参数进行处理,我们在用irb命令的时候,直接在程序文件名后面加上参数就可以了,那么假如要使用Rubymine等IDE的时候呢?pattern = Regexp.new(ARGV[0])filename = ARGV[1]File.open(filename) do |file| file.each_line do |line...
2019-01-10 18:16:29
110
原创 留心文字编码的不同
《Ruby基础教程》的第二十二章,有这样一段示例代码,意图删除读取的HTML文件的头部和尾部,并保存在新的TXT文件中。 1: htmlfile = "cathedral.html" 2: textfile = "cathedral.txt" 3: 4: html = File.read(htmlfile) 5: 6: File.open(textfile, "w") do |f...
2019-01-10 16:49:17
90
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人