新手问题 想请教一下有关 rails test 无法正确运行的问题

sws797 · 2018年09月12日 · 最后由 sws797 回复于 2018年09月13日 · 1785 次阅读

写在前面

2018 年 09 月 13 日 09:28:53(最新)
这个问题是由于 gem 包版本所导致,是一个不是问题的问题,建议直接查看 22 楼
我怎么总碰到这种奇葩事情

前情提要

我是根据《Ruby on Rails 教程 第 4 版》([美] 迈克尔·哈特尔(Michael, Hartl))自学 Rails
现在看到3.3 开始测试的章节
在编写一个失败测试(测试一个没有的页面)时出现了无法正确得到测试结果的问题

问题概要

如果我写了 100 个测试,其中有 10 个失败了,那么我也只能得到其中的一个失败
rails test 应该有总结性的语句告诉我我跑了 100 个测试,失败了 10 个,但是并没有
rails test 应该有总结性的语句告诉我我跑了 100 个测试,失败了 10 个,但是并没有
rails test 应该有总结性的语句告诉我我跑了 100 个测试,失败了 10 个,但是并没有
它现在只告诉我“你这个页面没写”,不会告诉我另外 9 个错误的事情

目前在重现问题的时候发现似乎是 gem 包的问题,在 16 楼有具体过程重现

问题重现

1. ruby 版本 2.4.4,rails 版本 5.1.2

2. 使用rails _5.1.2_ new sample_app创建一个新项目

3. 根据教程修改 Gemfile,为每一个 gem 包确定版本,并运行 bundle

source 'https://rubygems.org'

gem 'rails', '5.1.2'
gem 'puma', '3.9.1'
gem 'sass-rails', '5.0.6'
gem 'uglifier', '3.2.0'
gem 'coffee-rails', '4.2.2'
gem 'jquery-rails', '4.3.1'
gem 'turbolinks', '5.0.1'
gem 'jbuilder', '2.7.0'

group :development, :test do
  gem 'sqlite3', '1.3.13'
  gem 'byebug', '9.0.6', platform: :mri
end

group :development do
  gem 'web-console', '3.5.1'
  gem 'listen', '3.0.8'
  gem 'spring', '2.0.2'
  gem 'spring-watcher-listen', '2.0.1'
end

group :test do
  gem 'rails-controller-testing', '1.0.2'
  gem 'minitest-reporters', '1.1.14'
  gem 'guard', '2.13.0'
  gem 'guard-minitest', '2.4.4'
end

group :production do
  gem 'pg', '0.20.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

4. 使用rails generate controller StaticPages home help生成控制器,并运行 rails db:migrate

这时运行 rails test 可以得到教程中给出的信息

$ rails test
2 tests, 2 assertions, 0 failures, 0 errors, 0 skips

5. 主动添加测试 about 页面的失败测试

test/controllers/static_pages_controller_test.rb

test 'should get nothing' do
  get  static_pages_about_url
  assert_response :success
end

6. 运行 rails test

教程中给出的结果是

$ rails test
3 tests, 2 assertions, 0 failures, 1 errors, 0 skips

但是我实际只得到了错误信息,并且无法像教程中给出的那种结论式的信息

Running via Spring preloader in process 9911
Run options: --seed 22370

# Running:

.E

Error:
StaticPagesControllerTest#test_should_get_about:
NameError: undefined local variable or method `static_pages_about_url' for #<StaticPagesControllerTest:0x0000000006e2fcb0>
    test/controllers/static_pages_controller_test.rb:15:in `block in <class:StaticPagesControllerTest>'


/home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/reporter.rb:70:in `method': undefined method `test_should_get_about' for class `Minitest::Result' (NameError)
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/reporter.rb:70:in `format_rerun_snippet'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/reporter.rb:23:in `record'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-reporters-1.1.14/lib/minitest/minitest_reporter_plugin.rb:21:in `block in record'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-reporters-1.1.14/lib/minitest/minitest_reporter_plugin.rb:20:in `each'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-reporters-1.1.14/lib/minitest/minitest_reporter_plugin.rb:20:in `record'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:803:in `block in record'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:802:in `each'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:802:in `record'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:334:in `run_one_method'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:321:in `block (2 levels) in run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:320:in `each'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:320:in `block in run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:360:in `on_signal'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:347:in `with_info_handler'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:319:in `run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/line_filtering.rb:11:in `run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:159:in `block in __run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:159:in `map'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:159:in `__run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:136:in `run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/minitest_plugin.rb:77:in `run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:63:in `block in autorun'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
        from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
        from /home/sws/.rvm/rubies/ruby-2.4.4/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:59:in `require'
        from /home/sws/.rvm/rubies/ruby-2.4.4/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:59:in `require'
        from -e:1:in `<main>'

并且当我再添加一个额外的失败测试时,也无法测到第二个失败
也就是说,它这个测试在测试 about 页面时就出错然后就没有然后了
如果后面还有其它失败也不能正常测试

教程只给出了 rails 的版本是 5.1.2,但是并没有指明 ruby 的版本,请问我要如何才能解决这个问题呀

看你的测试父类是什么。如果是ActionDispatch::IntegrationTest的话可以用static_pages_about_url

piecehealth 回复

抱歉没看明白,测试的父类确实是这个,但是代码里面本身就是static_pages_about_url

require 'test_helper'
class StaticPagesControllerTest < ActionDispatch::IntegrationTest
...
  test 'should get about' do
    get static_pages_about_url
    assert_response :success
  end
end

看一下你的config/routes.rb文件

我没看过那个教程,如果完全按照你描述的步骤,这个测试失败是符合期望的,因为你现在只能响应static_pages_home_url, static_pages_help_url

教程应该是教你测试驱动开发,先写测试,再补全实现的代码。你看下面是不是让你加about页面

路由未定义。

errors 打出错误栈是正确的,书里有没有写“以下省略部分输出”?

piecehealth 回复

是的我知道失败是符合预期的,但是失败输出的结果不符合预期。
我只使用脚手架添加了 home 和 help,但是在 test 中加入了 about
按照教程中给出的结果,rails test 应该有一句话告诉我

3 tests, 2 assertions, 0 failures, 1 errors, 0 skips

但实际上没有这句话,于是我做了测试

在只使用脚手架添加 home 和 help 的情况下,我在 test 中额外加入了 about 和 contact 两个的失败测试
预期的 rails test 的结果应该是

4 tests, 2 assertions, 0 failures, 2 errors, 0 skips

但实际上在检测到 about 路由未定义的时候就不会再检测到 contact 的错误了
也就是没有这句总结性的语句(来表示我跑了多少个测试)的输出
而 rails test 输出的结果和只添加一个 about 的检测一样(都在上面给出了)
只会说 about 未定义

我下面那个回复可能组织语言更加清楚

Rei 回复

没有省略的说明。
主要问题在教程中说如果写 3 个测试,如果有 1 个错误的话会告诉我

3 tests, 2 assertions, 0 failures, 1 errors, 0 skips

但是没有这句话,当我写 4 个测试,已知有 2 个错误,那么 rails test 的结果应该有一句话

4 tests, 2 assertions, 0 failures, 2 errors, 0 skips

但是也没有这句话,并且报错和写 3 错 1 的输出是一样的,也就是在问题中有贴报错信息的部分
那么如果我写了 100 个测试,其中有 10 个失败了,那么我也只能得到其中的一个失败
rails test 应该有总结性的语句告诉我我跑了 100 个失败了 10 个,但是并没有
它现在只告诉我“你这个页面没写”,不会告诉我另外 9 个错误的事情

sws797 回复

错误打出异常栈是正常的,不然不好 debug,应该是书缺少提示了。

在同一个 test case 里面,遇到 error 或者 fail 之后,后面的代码就不执行了,因为很可能也会失败,没必要执行下去。test case 之间是独立的。

Rei 回复

test case 是指的一个 xxx_test.rb 的文件吗,
还是指的一个 test xxx end?

我这里只有一个 test.rb 的文件,其它目录只有一个 .keep 文件
这个文件里面只有脚手架自动添加的两个 test xxx end,和一个预期就是失败的 test about xxx end
(后面还添了第二个失败的 test)

sws797 回复

一个 test case 是指一个 test "..." do end 块,可以随意自己添加。

Rei 回复

那就是了,现在就是整个项目只有一个 test.rb,里面有 4 个 test,两个成功两个失败
但是 rails test 在跑到第一个失败的时候就告诉我“嘿,你这里没写”,然后第四个 test 不跑了
不告诉我“你跑了 4 个测试,错了两个” 咋办啊😭

你跑测试的输出贴全了看一下,最后会有一个结果的,4 个 test 肯定都会跑

sws797 回复

贴代码和运行结果。

error message: undefined local variable or method 'static_pages_about_url'

your code:

test 'should get nothing' do
  get  static_pages_about_url
  assert_response :success
end

在代码里没有 static_pages_about_ur 这个局部变量,说明 config/route.rb 忘记加了这个路由,把 about 加到和你之前 static_page 下 home,help 一样的位置就好了

15 楼 已删除
piecehealth 回复

@piecehealth @Rei 我刚刚重现这个问题去了,发现问题好像是某个 gem 包的问题(但是我才刚入门不懂 gem 包怎么选啊都是按教程来的😭

$ rails _5.1.2_ new test_app
$ cd test_app
$ rails generate controller Pages home help
$ rails test

一直到这里都没问题(虽然会提示要跑rails db:migrate但是不影响 test 结果)
然后我在 test/controllers/pages_controller_test.rb 中添加两个失败测试(后两个)

require 'test_helper'

class PagesControllerTest < ActionDispatch::IntegrationTest
  test "should get home" do
    get pages_home_url
    assert_response :success
  end

  test "should get help" do
    get pages_help_url
    assert_response :success
  end

  test "should get about" do
    get pages_about_url
    assert_response :success
  end

  test "should get contact" do
    get pages_contact_url
    assert_response :success
  end
end

再运行rails test可以得到预期的结果

sws@Ubuntu:~/ruby_on_rails/environment/bbb_app$ rails test
Running via Spring preloader in process 6083
/home/sws/ruby_on_rails/environment/bbb_app/db/schema.rb doesn't exist yet. Run `rails db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /home/sws/ruby_on_rails/environment/bbb_app/config/application.rb to limit the frameworks that will be loaded.
Run options: --seed 34068

# Running:

.E

Error:
PagesControllerTest#test_should_get_about:
NameError: undefined local variable or method `pages_about_url' for #<PagesControllerTest:0x0000000005b8ecf0>
    test/controllers/pages_controller_test.rb:15:in `block in <class:PagesControllerTest>'


bin/rails test test/controllers/pages_controller_test.rb:14

E

Error:
PagesControllerTest#test_should_get_contact:
NameError: undefined local variable or method `pages_contact_url' for #<PagesControllerTest:0x000000000559a560>
    test/controllers/pages_controller_test.rb:20:in `block in <class:PagesControllerTest>'


bin/rails test test/controllers/pages_controller_test.rb:19

.

Finished in 0.358412s, 11.1603 runs/s, 5.5802 assertions/s.
4 runs, 2 assertions, 0 failures, 2 errors, 0 skips

但是当我按教程要求更新 Gemfile 之后
gemfile(我去掉了注释)

source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end

gem 'rails', '~> 5.1.2'
gem 'sqlite3'
gem 'puma', '~> 3.7'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'

group :development, :test do
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'capybara', '~> 2.13'
  gem 'selenium-webdriver'
end

group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

修改后的 gemfile

source 'https://rubygems.org'

gem 'rails', '5.1.2'
gem 'puma', '3.9.1'
gem 'sass-rails', '5.0.6'
gem 'uglifier', '3.2.0'
gem 'coffee-rails', '4.2.2'
gem 'jquery-rails', '4.3.1'
gem 'turbolinks', '5.0.1'
gem 'jbuilder', '2.7.0'

group :development, :test do
  gem 'sqlite3', '1.3.13'
  gem 'byebug', '9.0.6', platform: :mri
end

group :development do
  gem 'web-console', '3.5.1'
  gem 'listen', '3.0.8'
  gem 'spring', '2.0.2'
  gem 'spring-watcher-listen', '2.0.1'
end

group :test do
  gem 'rails-controller-testing', '1.0.2'
  gem 'minitest-reporters', '1.1.14'
  gem 'guard', '2.13.0'
  gem 'guard-minitest', '2.4.4'
end

group :production do
  gem 'pg', '0.20.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

更新 gem 包

$ bundle install --without production
$ bundle update

这时候再跑rails test就不能正常运行了

sws@Ubuntu:~/ruby_on_rails/environment/aaa_app$ rails test
Running via Spring preloader in process 25721
/home/sws/ruby_on_rails/environment/aaa_app/db/schema.rb doesn't exist yet. Run `rails db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /home/sws/ruby_on_rails/environment/aaa_app/config/application.rb to limit the frameworks that will be loaded.
Run options: --seed 13155

# Running:

E

Error:
PagesControllerTest#test_should_get_about:
NameError: undefined local variable or method `pages_about_url' for #<PagesControllerTest:0x0000000003caa708>
    test/controllers/pages_controller_test.rb:15:in `block in <class:PagesControllerTest>'


/home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/reporter.rb:70:in `method': undefined method `test_should_get_about' for class `Minitest::Result' (NameError)
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/reporter.rb:70:in `format_rerun_snippet'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/reporter.rb:23:in `record'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-reporters-1.1.14/lib/minitest/minitest_reporter_plugin.rb:21:in `block in record'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-reporters-1.1.14/lib/minitest/minitest_reporter_plugin.rb:20:in `each'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-reporters-1.1.14/lib/minitest/minitest_reporter_plugin.rb:20:in `record'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:803:in `block in record'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:802:in `each'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:802:in `record'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:334:in `run_one_method'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:321:in `block (2 levels) in run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:320:in `each'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:320:in `block in run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:360:in `on_signal'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:347:in `with_info_handler'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:319:in `run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/line_filtering.rb:11:in `run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:159:in `block in __run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:159:in `map'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:159:in `__run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:136:in `run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/minitest_plugin.rb:77:in `run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/minitest-5.11.3/lib/minitest.rb:63:in `block in autorun'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
    from /home/sws/.rvm/gems/ruby-2.4.4/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
    from /home/sws/.rvm/rubies/ruby-2.4.4/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    from /home/sws/.rvm/rubies/ruby-2.4.4/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    from -e:1:in `<main>'
tinyfeng 回复

我这个测试就是为了得到失败,但是得到的失败信息不对,大佬可以看下 16 楼我重现的结果,似乎是 gem 包的问题😭

应该是教程的 Gemfile 有问题,导致 minitest fail 的时候测试框架本身出错了,没法继续。

简单 fix 就是用 rails new 之后生成的 Gemfile,不要用教程的 Gemfile。

你要想深究原因,可以/home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/reporter.rb设个断点自己 debug 一下,鉴于你是新手,还是不要折腾了。

又看了一眼,教程的 Gemfile 里有一个 minitest 的 plugin minitest-reporters,minitest 报错堆栈里就有这个 gem

这个教程好害人,要不是你贴的信息全,没人知道为什么。

piecehealth 回复

抱住大佬的大腿哭😭

估计是那几个 gem 导致错误捕捉除了问题:

group :test do
  gem 'rails-controller-testing', '1.0.2'
  gem 'minitest-reporters', '1.1.14'
  gem 'guard', '2.13.0'
  gem 'guard-minitest', '2.4.4'
end

我看了下这本书只说了替换 Gemfile 没说更换这些 gem 的理由是什么,对初学者很不利。

我推荐用《Rails 5 敏捷开发》这本书 https://book.douban.com/subject/27615703/

我在stackoverflow找到了楼主的问题,建议楼主看看,应该可以解决你的问题

我跟着这本书走了几遍,Ruby on Rails 教程rails 5 版本,完全没有问题,楼主的版本可能旧了点。

@piecehealth @Rei @tinyfeng 感谢各位大腿的帮助,刚刚已经成功解决了问题

问题所在

我看的是《Ruby on Rails 教程》样章试读
这个链接是之前官网的样章试读链接,直接从网页打开
这个版本中的样章中的 rails 版本是 5.1.2
现在从官网链接进去点击样章试读是下载一个 pdf,其中 rails 的版本是 5.1.6(中间也就差了一两天)
在各章给出的 Gemfile 文件中也只有 rails 的版本这一个不同gem 'rails', '5.1.6'
在将 Gemfile 文件根据最新的电子书修改后,已经没有了本贴所描述的问题

再次感谢三位大腿的帮助
我已购买此电子书以便接收它的最新更新
(吐槽:之前买的实体书上面 rails 的版本是 5.0.0)

如果没有更多讨论,我将与下周之前关闭这个贴子,谢谢🌹

Rei 回复

谢谢大腿荐书,先大致过完手上这本就去看🌹

sws797 关闭了讨论。 09月17日 09:51
需要 登录 后方可回复, 如果你还没有账号请 注册新账号