我如何修复此错误:权限被拒绝 - / Library / Ruby / Gems / 2.0.0 / gems / city-state-0.0.13/lib/db/states.us

时间:2016-07-05 07:18:17

标签: ruby-on-rails ruby macos rubygems

目前,我正在开发一个关于Ruby on Rails的Customer项目,该项目要求提供诸如用户名,名字,姓氏,街道1,街道2,城市和州的信息。在这个项目中,城市和州应该选择具有来自城邦宝石的填充条目的框。

我在我的Gemfile中键入gem 'city-state',然后在终端(Mac OS)中运行bundle install

现在在我的表单文件中_form.html.erb

<%= form_for(@customer) do |f| %>
    <% if @customer.errors.any? %>
        <div id="error_explanation">
          <h2><%= pluralize(@customer.errors.count, "error") %> prohibited this customer from being saved:</h2>

          <ul>
            <% @customer.errors.full_messages.each do |message| %>
                <li><%= message %></li>
            <% end %>
          </ul>
        </div>
    <% end %>

    <div class="field">
      <%= f.label :username %><br>
      <%= f.text_field :username %>
    </div>
    <div class="field">
      <%= f.label :first_name %><br>
      <%= f.text_field :first_name %>
    </div>
    <div class="field">
      <%= f.label :last_name %><br>
      <%= f.text_field :last_name %>
    </div>
    <div class="field">
      <%= f.label :street1 %><br>
      <%= f.text_field :street1 %>
    </div>
    <div class="field">
      <%= f.label :street2 %><br>
      <%= f.text_field :street2 %>
    </div>
    <div class="field">
      <%= f.label :state %><br>
      <select id="states-of-country" name="state">
        <option value="" selected="">Select Your State</option>
        <% CS.states(:us).each do |key, value| %>
        <option value="&lt;%= key %&gt;"><%= value %></option>
        <% end %>
      </select>
    </div>
    <div class="field">
      <%= f.label :city %><br>
      <select id="cities-of-state" name="city">
        <option value="" selected="">Select Your City</option>
      </select>
    </div>

    <script>
        $('#states-of-country').change(function () {
            var input_state = $(this);
            var cities_of_state = $("#cities-of-state");

            if ($(this).val() == "") {
                cities_of_state.html("");

            } else {
                $.getJSON('/cities/' + $(this).val(), function (data {
// cities_of_state.empty();
                    var opt = '<option value="" selected="">Select Your City</option>';
                    console.log(data);
                    if (data.length == 0) {

                    } else {
                        data.forEach(function (i) {
                            opt += '<option value="+ i +">' + i + '</option>';
                            cities_of_state.html(opt);
                        });
                    }
                });
            }
        });
    </script>
    <div class="actions">
      <%= f.submit %>
    </div>
<% end %>

错误集中在CS.states(:us)然后当我运行服务器时,每次去创建或编辑客户时,都会收到此错误:

  

许可被拒绝 - / Library/Ruby/Gems/2.0.0/gems/city-state-0.0.13/lib/db/states.us

PS。在我的gem文件中输入gem 'city-state'之前,我首先在终端中执行了此操作:sudo gem install 'city-state'

2 个答案:

答案 0 :(得分:0)

这是因为系统ruby中的文件权限和gem是root用户的安装程序。快速解决方法是chmod / chown /Library/Ruby/Gems/2.0.0/gems/

但更好的方法是使用像rbenvrvm这样的ruby版本管理器,以便您有一个单独的ruby安装。 RVM甚至提供“gemsets”功能 - 这样您就可以为每个项目提供隔离的gem环境。

答案 1 :(得分:0)

我遇到同样的问题,这个解决方案对我有用:

$ gem哪个城邦

- &GT; /Users/macbook/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/city-state-0.0.13/lib/city-state.rb

$ sudo chown -R $(whoami)/Users/macbook/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems / *