fedora 搭建ruby on rails 开发环境

来源:互联网 发布:南京美食 知乎 编辑:程序博客网 时间:2024/05/16 17:00

这段时间接触了ruby,发现ruby真的是个十分优秀的编程语言,ruby的精髓rails可以让web开发的效率成倍的提高,下面就介绍一下我搭建rails环境的过程。

我用的系统是Fedora, $为命令提示符

1 安装ruby

$ sudo yum install ruby 

安装稳定版本的ruby

2 安装rails

$  gem install rails

$ sudo yum install rubygem-railties

官方新手教程里提供的是 gem install rails 会出现如下错误,所有我用了上面的命令

--------------------------------------------------------------------------------------------------------

ERROR:  Error installing rails:
ERROR: Failed to build gem native extension.


    current directory: /home/wusq/.gem/ruby/gems/nio4r-2.1.0/ext/nio4r
/usr/bin/ruby -r ./siteconf20170628-3775-11gw6ya.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/share/include/ruby.h


extconf failed, exit code 1

--------------------------------------------------------------------------------------------------------

接下来就可以使用rails命令来新建一个rails项目

$ rails new blog --skip-bundle

$ cd blog

还需要安装bundle(安装Gemfile配置文件的gem依赖的工具)

$ sudo yum install rubygem-bundler

刚才我们创建blog时跳过了gem的安装(--skip-bundle),现在我们来安装一下

$ bundle install

又出现错误了

--------------------------------------------------------------------------------------------------------

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.


    current directory: /home/wusq/.gem/ruby/gems/nio4r-2.1.0/ext/nio4r
/usr/bin/ruby -r ./siteconf20170628-4490-17ao2sp.rb extconf.rb
checking for unistd.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.


Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib64
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/$(RUBY_BASE_NAME)
/usr/share/ruby/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /usr/share/ruby/mkmf.rb:587:in `try_cpp'
from /usr/share/ruby/mkmf.rb:1091:in `block in have_header'
from /usr/share/ruby/mkmf.rb:942:in `block in checking_for'
from /usr/share/ruby/mkmf.rb:350:in `block (2 levels) in postpone'
from /usr/share/ruby/mkmf.rb:320:in `open'
from /usr/share/ruby/mkmf.rb:350:in `block in postpone'
from /usr/share/ruby/mkmf.rb:320:in `open'
from /usr/share/ruby/mkmf.rb:346:in `postpone'
from /usr/share/ruby/mkmf.rb:941:in `checking_for'
from /usr/share/ruby/mkmf.rb:1090:in `have_header'
from extconf.rb:5:in `<main>'


To see why this extension failed to compile, please check the mkmf.log which can be found here:


  /home/wusq/.gem/ruby/extensions/x86_64-linux/2.3.0/nio4r-2.1.0/mkmf.log


extconf failed, exit code 1


Gem files will remain installed in /home/wusq/.gem/ruby/gems/nio4r-2.1.0 for inspection.
Results logged to /home/wusq/.gem/ruby/extensions/x86_64-linux/2.3.0/nio4r-2.1.0/gem_make.out


An error occurred while installing nio4r (2.1.0), and Bundler cannot continue.
Make sure that `gem install nio4r -v '2.1.0'` succeeds before bundling.


In Gemfile:
  rails was resolved to 5.0.4, which depends on
    actioncable was resolved to 5.0.4, which depends on
      nio4r

--------------------------------------------------------------------------------------------------------

好像是说要先安装开发工具,百度了半天终于找到解决办法了,原来是rpm配置好。可能bundle命令用到了rmp。安装redhat-rpm-config

$ sudo dnf install redhat-rpm-config

继续执行bundle install

$ bundle install

此时报错说没安装sqllite 安装一下呗

$ sudo yum install sqlite-devel

$ gem install sqlite3 -v '1.3.13'

安装好了数据库了, 继续bundle install

$ bundle install

成功!

终于把bundle install命令执行成功了。接下来试试能不能启动服务器吧

$ bin/rails server

报错

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[wusq@localhost blog]$ bin/rails s
/home/wusq/.gem/ruby/gems/bundler-1.15.1/lib/bundler/runtime.rb:85:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

这是因为要安装nodejs

$ sudo yum install nodejs

nodejs安装完毕,再试试启动服务器

$ bin/rails server

终于成功了!!!





原创粉丝点击